c#linq crm select where contains

时间:2016-02-08 17:01:56

标签: c# linq where contains

我尝试使用" 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();

但我无法弄清楚如何做到这一点。第二次尝试给了我这个错误:

  

A' SelectMany'操作必须先在' Where'按实体ID过滤的操作。

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

PS: 我刚刚读到了关于" entity.entityRef.Name.Contains()"" .contains"无法访问的内容。因为"名称"财产不是地面级别,因此它不适用于" {{1}}"检查。

2 个答案:

答案 0 :(得分:0)

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

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

我认为如果你改用StartsWith会更好(如果可能的话)。

答案 1 :(得分:0)

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

  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();

希望这能帮助别人:)