【问题标题】:How to make IQueryable<out T> work with a reqular IQueryable?如何使 IQueryable<out T> 与常规 IQueryable 一起工作?
【发布时间】:2010-10-14 13:12:17
【问题描述】:

我正在使用 Linq2SQL 并使用旧系统。该系统是用 .Net 构建的,但没有数据层,所以我正在对其进行转码,以便它有一个。我有一个看起来像这样的 linq 查询...

 var data = from p in db.tblPeoples
                   orderby p.strLastName,p.strFirstName
                   select new
                   {
                       guidPersonId = p.guidPersonId,
                       strFirstName = p.strFirstName,
                       strLastName = p.strLastName,
                       strRank = p.tblCodesRank.strDescription,
                       strPhone = p.strPhone,
                       strEmail = p.strEmail,
                       strOffice = p.tblOrganization.strAcronym,
                       RolesList = p.tblRoles
                   };

当我检查 var 的签名时,它是一个 IQueryable,我不知道那是什么。在我的数据层中,我将此作为 IQueryable 返回,但是当我尝试使用数据层版本然后在返回的数据集上执行 .where 以对其进行搜索时,我收到错误,我无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型。

我该怎么办?我正在尝试创建代码重用并使用我已经编写的数据层版本。数据层版本如下所示:

public static IQueryable RetrieveAllPeople()
{
            var data = from p in db.tblPeoples
               orderby p.strLastName, p.strFirstName
               select new
               {
                   guidPersonId = p.guidPersonId,
                   strFirstName = p.strFirstName,
                   strLastName = p.strLastName,
                   strRank = p.tblCodesRank.strDescription,
                   strPhone = p.strPhone,
                   strEmail = p.strEmail,
                   strOffice = p.tblOrganization.strAcronym,
                   RolesList = p.tblRoles
               };

    return data;
}

【问题讨论】:

  • 您在 RetrieveAllPeople() 中使用匿名类是否有原因?另外,您的 IQueryable 没有指定类型,您不认为有必要获取必要的属性吗?
  • 有人能解释一下当编译器抛出“无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型”时的含义吗?

标签: linq lambda iqueryable


【解决方案1】:

你的返回类型应该是IQueryable<T>,和IQueryable不一样。

为此,您需要创建一个类来填写您的选择,而不是像您一样使用匿名类。

【讨论】:

    猜你喜欢
    • 2013-09-03
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2013-05-05
    相关资源
    最近更新 更多