【问题标题】:Convert IQueryable to List<T> type将 IQueryable 转换为 List<T> 类型
【发布时间】:2012-11-15 13:38:44
【问题描述】:

我刚刚使用 DAL 中的LINQ 执行了一个查询,并获得了一个记录集合,其中嵌入了ILIST 对象,如下所示

string name
date   startDate
date  endDate
ILIST<MyType> ImbeddedList (this contains more columns like recordID, sentDate, dueDate)

我需要将LIST&lt;T&gt; 返回到要绑定的网格。

我在编写LINQ 语句以过滤出IQueryable 集合对象时遇到了一些问题。

在我下面的声明中:

IQueryable<All_DATA> cases = dalObject.GetData();
var mylist = cases.Select(s => {s.name, s.startDate, s.endDate,s.ImbeddedList????}).ToList();

当我到达从 dalObject 返回的 ImbeddedList 时,智能感知不会显示 ImbeddedList 中的字段。如何正确编写 LINQ 语句来过滤 ImbeddedList 对象中的更多字段?

【问题讨论】:

  • 如果我的解决方案帮助了你,然后接受 d 回答或询问是否需要其他任何东西..

标签: linq


【解决方案1】:

据我所知,你能做的是

用于从ImbeddedList获取完整列表

var mylist = cases.Select(s => {s.name, s.startDate, s.endDate, s.ImbeddedList}).ToList();

以及从ImbeddedList获取单个字段

var mylist = cases.SelectMany(s => s.ImbeddedList)
                  .Select(IItem => { IItem.Field1, IItem.Field2 }).ToList();

更多信息请参考:

  1. The Linq SelectMany Operator
  2. LINQ - Get all items in a List within a List?
  3. Using LINQ, select list of objects inside another list of objects
  4. Use Google Search: "linq select list within list"

【讨论】:

  • 如何将它们结合起来?感谢您的帮助。
  • 为此,您需要从 ImbeddedList n 中选择单个记录,然后获取您需要的字段 n 如果您需要该单个元素上的多个字段,那么...
  • ....我认为您应该检查 SQL 查询中的 OUTER APPLY 和 CROSS APPLY 是什么。N 如何在 LINQ 中使用它。
  • 如果您不确定 linq 将查询您需要的内容,请提供 SQL 查询(如果有)n 以便我们可以帮助您或以其他方式使用 linqpad 进行转换,反之亦然。 .
  • 苛刻,我还是一头雾水。从您的示例中,我看到您可以将每个对象中的选定字段添加到一个列表中。以及从嵌入列表中选择的字段。我的问题是如何将它们结合起来。如果我从 IQueryable 对象中获得 50 条记录,其中包含来自对象的字段和来自嵌入列表的附加字段,我如何在 LINQ 中进行选择以仅从一个语句中的对象和嵌入列表中选择这些字段并填充一个新的var mylist 对象?感谢您的帮助。
猜你喜欢
  • 2010-10-19
  • 2010-11-18
  • 2017-03-11
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多