“where”条件无效。实体成员正在调用无效的属性或方法

时间:2015-07-03 08:22:45

标签: c# linq dynamics-crm dynamics-crm-2013

我已经尝试了几种方法来搜索在membresEquipeDuClient列表中有propritaire.id的客户端,但是每次我得到“无效”其中'条件。实体成员正在调用无效的属性或方法。“ -error!

我在第二个请求中收到了错误,

我使用的方法:

List<TeamMembership> membresEquipeDuClient = (from k in context.CreateQuery<TeamMembership>()
                                              where k.teamid == equipeDuClient.Id
                                              select k).ToList();
var pRechercheNumeroClient = (from p in context.CreateQuery<Client>()
                              where membresEquipeDuClient.Any(a => a.systemuserid == p.proprietaire.Id)
                              select p).FirstOrDefault();

知道如何解决这个问题吗?

所有帮助的Thx!

2 个答案:

答案 0 :(得分:1)

var pRechercheNumeroClient = (from p in context.CreateQuery<Client>()
                              where membresEquipeDuClient.Select(a => a.systemuserid).Contains(p.proprietaire.Id)
                              select p).FirstOrDefault();

答案 1 :(得分:1)

正如评论中所述,Any不受支持,但Contains是。{1}}。所以你可以这样做:

var systemUserIds = 
(
    from k in context.CreateQuery<TeamMembership>()
    where k.teamid == equipeDuClient.Id
    select k.systemuserid // Select the Id only
).ToList();

var pRechercheNumeroClient = 
(
    from p in context.CreateQuery<Client>()
    where systemUserIds.Contains(p.proprietaire.Id)
    select p
).FirstOrDefault();

我不熟悉Dynamics CRM,但我认为您可以从第一个语句中删除ToList,因此它将是IQueryable,并且这两个语句将作为一个表达式执行