【问题标题】:How to convert LINQ query result to List?如何将 LINQ 查询结果转换为 List?
【发布时间】:2012-04-26 12:40:33
【问题描述】:

我需要将 linq 查询结果转换为列表。我尝试了以下代码:

var qry = from a in obj.tbCourses
                     select a;

List<course> lst = new List<course>();
lst = qry.ToList();

以上代码出现如下错误:

Cannot implicitly convert type 
System.Collections.Generic.List<Datalogiclayer.tbcourse> to
System.Collections.Generic.List<course>

【问题讨论】:

  • 怎么没有帮助?你期望什么没有发生?
  • 顺便说一句,你的代码可能会更短...var lst = obj.tbCourses.ToList();

标签: linq


【解决方案1】:

不需要做这么多的工作..

var query = from c in obj.tbCourses
        where ...
        select c;

那么你可以使用:

List<course> list_course= query.ToList<course>();

对我来说很好用。

【讨论】:

  • 2021 现在可以简化为 List listCourse= query.ToList();
【解决方案2】:
List<course> = (from c in obj.tbCourses
                 select 
                new course(c)).toList();

您可以在调用时直接将实体对象转换为列表。有一些方法可以将其转换为不同的数据结构(列表、数组、字典、查找或字符串)

【讨论】:

  • 恕我直言,这是最好的答案。它不仅是单个命令,而且还说明from ... select ... linq 语法仍然保持其与标准形式等效的含义(tbCourses.Select()
【解决方案3】:

您需要以某种方式将每个tbcourse 对象转换为course 的一个实例。例如course 可以有一个构造函数,它采用tbcourse。然后,您可以像这样编写查询:

var qry = from c in obj.tbCourses
          select new course(c);

List<course> lst = qry.ToList();

【讨论】:

  • 这很有创意!但是,它确实有一个缺点,即您的模型项目现在将依赖于您的数据存储库。虽然这在较小的项目中会很好,但取决于您的架构和关注点的分离,这可能是一个问题。
【解决方案4】:

您需要使用select new LINQ 关键字将您的tbcourseentity 显式转换为自定义类型courseselect new 示例:

var q = from o in db.Orders
        where o.Products.ProductName.StartsWith("Asset") && 
              o.PaymentApproved == true
        select new { name   = o.Contacts.FirstName + " " +
                              o.Contacts.LastName, 
                     product = o.Products.ProductName, 
                     version = o.Products.Version + 
                              (o.Products.SubVersion * 0.1)
                   };

http://www.hookedonlinq.com/LINQtoSQL5MinuteOverview.ashx

【讨论】:

    【解决方案5】:

    您可以做的是将所有内容选择到一个新的 Course 实例中,然后将它们转换为一个列表。

    var qry = from a in obj.tbCourses
                         select new Course() {
                             Course.Property = a.Property
                             ...
                         };
    
    qry.toList<Course>();
    

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      相关资源
      最近更新 更多