我想在代码中内联使用lambda之类的函数。但是我不知道怎么写。
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表达式转换为类型'Product'”
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;
});
}
答案 0 :(得分:1)
请尝试以下操作,尽管我不确定您要完成什么。您已经在开始时就给出了如何使用Task.FromResult
的有效示例。但是您正在问如何使用lambda(我不明白为什么)。我只是假设您想将执行推迟到实际的Task中,这就是我在下面演示的内容:
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;
});
}
答案 1 :(得分:0)
docker push
需要一个Task.FromResult<Product>()
类型的参数,因此您不能传递lambda表达式,因此会产生编译错误。