【问题标题】:Linq 'where' clause returning CS1929Linq 'where' 子句返回 CS1929
【发布时间】:2018-10-20 17:04:50
【问题描述】:

仍在学习 Linq 的细微差别。 进行了研究,但找不到解决我认为很容易解决的方法。

编辑:这里要求的是完整的代码块:

//Jboyd pull back all relative orgs
var parent =
from s in Students
where s.Id==5027
select new { 
    ID_PK = s.CaseOwnerIdAspnet_Users.User_ID_FKDYN_User_Profile.Organization_ID_FKDYN_Organization.Parent_ID_FK == null ?
    (int) s.CaseOwnerIdAspnet_Users.User_ID_FKDYN_User_Profile.Organization_ID_FKDYN_Organization.ID_PK
    :
    (int) s.CaseOwnerIdAspnet_Users.User_ID_FKDYN_User_Profile.Organization_ID_FKDYN_Organization.Parent_ID_FK
    };

var orgs = 
from o in DYN_Organizations
join p in parent on o.Parent_ID_FK equals p.ID_PK
select new {ID_PK = o.ID_PK};

var unionOrgs = parent.Union(orgs) ;

//unionOrgs 是 Orgs 的列表 //下面的查询:我需要查询一个更大的表,其中 orgs 在上面的列表中

var userProfilesQuery = from up in DYN_User_Profiles
where unionOrgs.Contains(up.Organization_ID_FK) //this is where the error occurs 
select up;

错误: CS1929“IQueryable”不包含“包含”的定义,并且最佳扩展方法重载“ParallelEnumerable.Contains(ParallelQuery, int)”需要“ParallelQuery”类型的接收器

最终的目标是 unionOrgs 返回一个组织列表。然后我想为该列表中的任何组织查询一个更大的表

【问题讨论】:

  • 那是因为orgs是一个对象集合,其属性为ID_PKs。你想做什么?
  • IQueryable<> 继承 IEnumerable<t> @gilad 表明您的 Orgs 是一个集合
  • 对你的类和属性名做一些事情。这很难阅读(而且你必须一直这样做!)。

标签: c# linq


【解决方案1】:

orgs 不是单个实例,而是一个集合,这就是它没有ID_PK 属性的原因。而是使用Contains:

var orgs = from o in DYN_Organizations
           join p in parent on o.Parent_ID_FK equals p.ID_PK
           select o.ID_PK;

var query = from up in userProfilesQuery
            where orgs.Contains(up.Organization_ID_FK) 
            select up;

另请参阅,当您投影一个具有单个字段的匿名对象时,您不妨只投影属性并接收IQueryable<int> 而不是IQueryable<AnonymousObject>

特别是对于第二个查询,我发现方法语法更简洁:

var query = userProfilesQuery.Where(up => orgs.Contains(up.Organization_ID_FK));

【讨论】:

  • 感谢您的快速反馈。使用上述两种解决方案,我得到了这个新错误: CS1929 'IQueryable>' does not contain a definition for 'Contains' 和最佳扩展方法重载 'ParallelEnumerable.Contains(ParallelQuery , int)' 需要类型为 'ParallelQuery' 的接收器
  • @JoshuaBoyd 为我们提供了与此相关的全部代码,您粘贴的内容无法扣除更多内容(向我们展示 DYN_Organisations 和 userProfilesQuery 是什么类型以及它们是如何声明的,最好粘贴整个函数)
  • 抱歉持续更新。我试图通过仅提取我认为是相对的内容来简化代码,但是有多个请求来发布完整的代码块。非常感谢您的帮助 -
猜你喜欢
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多