【问题标题】:Return Datatype of Linq Query ResultLinq 查询结果的返回数据类型
【发布时间】:2009-06-12 20:10:33
【问题描述】:

我想我错过了一些非常基本的东西。

var signatures=from person in db.People
               where person.Active==true
               select new{person.ID, person.Lname, person.Fname};

此 linq 查询有效,但我不知道如何将结果作为类的公共方法返回。

示例似乎总是显示返回整个实体(如 IQueryable<People>),但在这种情况下,我只想返回一个子集作为 SomeKindOfList<int, string, string>。既然不能用var,那我用什么?

谢谢!

【问题讨论】:

    标签: linq


    【解决方案1】:

    您可以从 linq 查询中获取具体类型,但在您的情况下,您正在使用构造匿名类型

    select new{person.ID, person.Lname, person.Fname};
    

    如果相反,您编写了一个名为“Person”的类,然后这样做:

    select new Person(peson.ID, person.Lname, person.Fname);
    

    您的 linq 结果(签名)可以是 IEnumerable<Person> 类型,这是您可以从函数返回的类型。

    例子:

        IEnumerable<Person> signatures = from person in db.People
           where person.Active==true
           select new Person(person.ID, person.Lname, person.Fname);
    

    【讨论】:

    • 如果我不想编写课程代码怎么办?我可以作为某种匿名或无类型集合返回吗?
    • Nope.. var 关键字的全部目的是让您方便地处理匿名类型,但这也意味着您的类型是在运行时生成的。如果您确实需要传播一堆匿名类型,那么您可能在整体设计中做错了什么。如果您不在本地处理检索到的数据,则必须将其添加到某处或将其存储在某处,并且您不希望将匿名类型用于此类功能。
    • @womp "....你可能在整体设计中做错了什么"
    猜你喜欢
    • 2012-12-13
    • 2011-08-20
    • 2016-09-30
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 2023-03-08
    相关资源
    最近更新 更多