C# LINQ CRM 选择包含的位置

本文关键字:位置 包含 选择 LINQ CRM | 更新日期: 2023-09-27 18:33:47

我正在尝试使用" contains"键从CRM实体中进行选择。

我试过这个:

var results = crm.new_supplycontractSet
    .Where(x => x.new_city != null && 
        x.new_city.Name.Contains("myChars")) 
    .ToList();

但它给了我这个错误:

无效的"位置"条件。实体成员正在调用无效的属性或方法。

而这个:

var result = (
    from c in crm.new_supplycontractSet
    from a in crm.new_comuneSet 
    where a.new_name.Contains(comune)
    where c.new_city.Id == a.Id
    select c)
    .ToList();

但是我不知道该怎么做。第二次尝试给了我这个错误:

"SelectMany"操作之前必须有一个按实体 ID 筛选的"Where"操作。

如何通过包含过滤器进行选择? "x.new_city"是来自crm.new_comuneSet的实体引用。

附注:我刚刚读了一些关于" entity.entityRef.Name.Contains()"无法访问的内容,因为"Name"属性不是地面,因此它不可用于" .contains "检查。

C# LINQ CRM 选择包含的位置

最后我明白了。 我必须安装 SqlClient 并使用以下contains子句,而不是子句:

  results = (from x in crm.new_supplycontractSet
                           where x.new_city != null
                           where x.new_address != null
                           where SqlMethods.Like(x.new_city.Name, "city")
                           where SqlMethods.Like(x.new_address.Name, "street")
                           select ....).ToList();

希望这对其他人有所帮助:)

您可以

尝试将字段和过滤器转换为小写或大写。

  var results = crm.new_supplycontractSet
    .Where(x => x.new_city != null && 
        x.new_city.Name.ToLower().Contains(("myChars").ToLower())) 
    .ToList();

我认为如果您使用 StartsWith 代替(如果可能的话),会更好。