我有一个'GetTransactions'方法,它返回一个类型为
的对象IList<ApplicationTransaction>
这是一个ApplicationTransaction:
public partial class ApplicationTransaction
{
public int TransactionId { get; set; }
public int ApplicationId { get; set; }
public string Event { get; set; }
public System.DateTime CreatedOn { get; set; }
public virtual Application Application { get; set; }
}
如何转换此LINQ查询:
return (from t in GetTransactions().OfType<ApplicationTransaction>()
where t.Event == transactionType.ToString()
select t).FirstOrDefault();
进入流畅的语法?
这不起作用 - 我不理解什么?
return GetTransactions().OfType<ApplicationTransaction>().Where(t.Event == transactionType.ToString().FirstOrDefault();
答案 0 :(得分:3)
你需要在where语句中使用lambda的参数:
return GetTransactions()
.OfType<ApplicationTransaction>()
.Where(t => t.Event == transactionType.ToString())
.FirstOrDefault();
(注意t =>
部分定义新的表达式范围,而不是直接尝试访问变量&#34; t&#34;)
如果您选择整个实体,则不需要单独选择。
我还建议使用我在答案中使用的多行布局来更好地理解查询,并发现潜在的问题,例如@nvoigt提到的缺失括号问题。