我如何用流利的语法编写这个LINQ查询

本文关键字:LINQ 查询 语法 何用流 | 更新日期: 2023-09-27 18:02:59

我有一个'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();

我如何用流利的语法编写这个LINQ查询

在where语句中需要一个lambda参数:

return GetTransactions()
    .OfType<ApplicationTransaction>()
    .Where(t => t.Event == transactionType.ToString())
    .FirstOrDefault();

(注意t =>部分定义了一个新的表达式作用域,而不是直接尝试访问变量"t")

如果要选择整个实体,则不需要单独的select。

我还建议使用我在回答中使用的多行布局来更好地理解查询并捕获潜在的问题,如缺少括号问题@nvoigt。