【问题标题】:Inline select new in LINQLINQ中的内联选择新
【发布时间】:2014-05-27 16:48:31
【问题描述】:

我有这个标准的 LINQ

var sidEvents = (from f in AppDelegate.Self.Subscription.Fred
                                          from s in f.Sid
                                          from e in s.Eve
                                          where e.date >= oneWeek
                                          select new {Title = e.type, Data = e.data, Date = e.date}).ToList();

我已经改变了一些东西,现在我得到了一个 Eve 对象列表,其后带有 where 条件

var sidEvents = AppDelegate.Self.DBManager.GetListOfEvents("type", "EatingOut").Where(t => t.date >= oneWeek).ToList();

有没有一种方法可以扩展此 LINQ 查询以包含原始 LINQ 查询中的 select new {...}?

【问题讨论】:

  • 将 .Select 放在 tolist 之前不起作用?
  • 不 - Select(new {...}).ToList();给我一个错误,我无法将匿名函数转换为 Func
  • @Nodoid,你的语法错了,应该是Select(e => new {...}).ToList(),你得给它一个函数。 new {} 是一个语句,不能以任何方式解析为函数:)
  • @flindeberg - 谢谢 - 我通常使用 (from f in ...) 形式的查询

标签: c# linq


【解决方案1】:
var sidEvents = AppDelegate.Self.DBManager.GetListOfEvents("type", "EatingOut")
                    .Where(t => t.date >= oneWeek)
                    .Select(e => new { Title = e.type, Data = e.data, Date = e.date }).ToList();

【讨论】:

    【解决方案2】:

    也许你正在寻找这个:

    var sidEvents = AppDelegate.Self.DBManager.GetListOfEvents("type", "EatingOut")
                       .Where(t => t.date >= oneWeek)
                       .Select(e => new {...})
    

    【讨论】:

      【解决方案3】:

      如果你比较熟悉 LINQ 查询语法,你可以

      • 将第二个查询从方法语法转换为查询语法

        var sidEvents = (from t in AppDelegate.Self.DBManager.GetListOfEvents("type", "EatingOut")
                         where t.date >= oneWeek
                         select t).ToList();
        
      • 然后将 select t 部分替换为您的 new 表达式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-28
        • 1970-01-01
        • 2018-08-10
        • 2014-12-28
        • 2018-06-19
        相关资源
        最近更新 更多