首页 > 解决方案 > Task.FromResult 的代码如何使用带功能

问题描述

我想在我的代码中使用像 lambda inline 这样的函数。但是我不知道怎么写。

public Task<Product> Details(string id)
        {
            return Task.FromResult(GetProduct(id));
        }

private Product GetProduct(string id)
        {
            try
            {
                var employee = db.ProductList
                    .Include(d => d.MappingProductTagList)
                    .ThenInclude(mapping => mapping.Tag)
                    .SingleOrDefault(p => p.Id == id);


                db.Entry(employee).State = EntityState.Detached; // Änderungen werden nicht geprüft.
                return employee;
            }
            catch
            {

                throw;
            }
        }

我想使用这样的代码。但我收到消息“无法将 lambda 表达式转换为类型‘产品’,因为它不是委托类型”

public Task<Product> Details(string id)
        {
            return Task.FromResult<Product>(() => {
                Product employee = db.ProductList
                        .Include(d => d.MappingProductTagList)
                        .ThenInclude(mapping => mapping.Tag)
                        .SingleOrDefault(p => p.Id == id);


                db.Entry(employee).State = EntityState.Detached; // Änderungen werden nicht geprüft.
                return employee;
            });
        }

标签: c#

解决方案


尝试以下操作,尽管我不完全确定您要完成什么。您已经给出了如何Task.FromResult在一开始就正确使用的有效示例。但是您在问如何使用 lambda 来做到这一点(我不明白为什么)。我只是假设您想将执行推迟到实际任务中,这就是我在下面演示的内容:

public Task<Product> Details(string id)
{
    return Task.Run(() =>
    {
        Product employee = db.ProductList
                .Include(d => d.MappingProductTagList)
                .ThenInclude(mapping => mapping.Tag)
                .SingleOrDefault(p => p.Id == id);

        db.Entry(employee).State = EntityState.Detached; // Änderungen werden nicht geprüft.
        return employee;
    });
}

推荐阅读