【问题标题】:c# linq crm select where containsc# linq crm select where contains
【发布时间】:2016-05-18 10:33:06
【问题描述】:

我正在尝试使用“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”操作之前必须有一个“Where”操作,该操作按实体 ID 进行过滤。

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

PS: 我刚刚读到一些关于“entity.entityRef.Name.Contains()”无法访问的内容,因为“名称”属性不是地面层,因此它不适用于“.contains”检查。

【问题讨论】:

  • 您发布的代码缺少) 是这个问题吗?
  • 对不起,我的应对方式不好,我解决了!谢谢
  • 您的实体中的 new_supplycontractSet 到底是什么?
  • 让我们从头开始。第一次尝试有什么问题?
  • 您的第二个代码在第一个where 之后有一个杂散的;

标签: c# linq where contains


【解决方案1】:

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

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

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

【讨论】:

  • 嗨,我试过了,但我仍然有同样的问题“无效的 whre 子句”。我更新了我的问题,但仍然坚持它:(
【解决方案2】:

最后我明白了。而不是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();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 2013-01-22
    • 2012-01-29
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多