在 linq to sql 查询中使用 contains() 获取数据
get the data using contains() in linq to sql query
我正在尝试使用 c# 从 crm 实体获取记录列表。
正在尝试获取具有另一个列表中存在的 ID 的记录。
这里是查询:
private static List<plus_visit> GetVisits(IOrganizationService service, List<Guid> customVendorIDs = null)
{
var visits = new List<plus_visit>();
using (var crm = new CrmServiceContext(service))
{
try
{
visits = crm.plus_visitSet.Where(a => customVendorIDs.Contains(a.ow_Vendor.Id)).ToList();
}
catch (Exception ex)
{
Utility.LogError(ex);
}
return visits;
}
我收到错误消息“无效的 where 条件。实体成员正在调用无效的 属性 或方法。”
当我将其更改为如下所示的 .tolist() 时,它会起作用,但是首先转换为列表然后再对其进行查询需要花费大量时间。
visits = crm.plus_visitSet.tolist().Where(a => customVendorIDs.Contains(a.ow_Vendor.Id)).ToList();
plus_visit 是使用 XRMToolbox 早期绑定生成器生成的。它看起来像:
public System.Linq.IQueryable<CrmEarlyBound.plus_visit> plus_visitSet
{
[System.Diagnostics.DebuggerNonUserCode()]
get
{
return this.CreateQuery<CrmEarlyBound.plus_visit>();
}
}
知道我做错了什么吗?
Here 您可以找到 LINQ 限制列表。您的查询符合 'The left side of the clause must be an attribute' 规则...
如果 customVendorIDs
也通过 LINQ 查询检索,您可以通过使用供应商过滤器连接表来解决此限制,以仅获取所需的 plus_visitSet
记录。
请注意,使用 crm.plus_visitSet. ** tolist() ** ...
查询,您将从数据库中检索所有 plus_visit
记录,然后将其过滤掉。这可能会对性能产生重大影响....
我正在尝试使用 c# 从 crm 实体获取记录列表。 正在尝试获取具有另一个列表中存在的 ID 的记录。
这里是查询:
private static List<plus_visit> GetVisits(IOrganizationService service, List<Guid> customVendorIDs = null)
{
var visits = new List<plus_visit>();
using (var crm = new CrmServiceContext(service))
{
try
{
visits = crm.plus_visitSet.Where(a => customVendorIDs.Contains(a.ow_Vendor.Id)).ToList();
}
catch (Exception ex)
{
Utility.LogError(ex);
}
return visits;
}
我收到错误消息“无效的 where 条件。实体成员正在调用无效的 属性 或方法。”
当我将其更改为如下所示的 .tolist() 时,它会起作用,但是首先转换为列表然后再对其进行查询需要花费大量时间。
visits = crm.plus_visitSet.tolist().Where(a => customVendorIDs.Contains(a.ow_Vendor.Id)).ToList();
plus_visit 是使用 XRMToolbox 早期绑定生成器生成的。它看起来像:
public System.Linq.IQueryable<CrmEarlyBound.plus_visit> plus_visitSet
{
[System.Diagnostics.DebuggerNonUserCode()]
get
{
return this.CreateQuery<CrmEarlyBound.plus_visit>();
}
}
知道我做错了什么吗?
Here 您可以找到 LINQ 限制列表。您的查询符合 'The left side of the clause must be an attribute' 规则...
如果 customVendorIDs
也通过 LINQ 查询检索,您可以通过使用供应商过滤器连接表来解决此限制,以仅获取所需的 plus_visitSet
记录。
请注意,使用 crm.plus_visitSet. ** tolist() ** ...
查询,您将从数据库中检索所有 plus_visit
记录,然后将其过滤掉。这可能会对性能产生重大影响....