c# - 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;
});
}
解决方案
尝试以下操作,尽管我不完全确定您要完成什么。您已经给出了如何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;
});
}
推荐阅读
- android - FragmentPagerAdapter 没有加载最后一个片段?
- javascript - 语法错误 - 当前未启用对实验性语法“decorators-legacy”的支持
- reactjs - 将道具从父组件传递给子组件
- javascript - 我遇到了 highmaps 的问题,它与显示传递的数据有关
- python - Google Colab 在 pip 安装时抛出错误
- neo4j - 在 neo4j 查询中搜索属性
- database - Cassandra 错误 AbstractLocalAwareExecutorService
- c - 附加数组和平均值未在 c 程序中显示输出,而是要求 2 个输入
- javascript - 我的 datetimepicker 没有出现在 symfony 3.4 中
- node.js - Kubernetes 通过基于时间的触发器扩展 pod