代码之家  ›  专栏  ›  技术社区  ›  Matthew Kruskamp

如何在DLINQ中使用项目列表执行Contains()?

  •  1
  • Matthew Kruskamp  · 技术社区  · 16 年前

    我想构建一个dlinq查询,检查标题中是否有任何数量的项目。我知道你可以做到 .Contains() 使用列表,但我需要检查标题是否包含任何项目,而不是项目是否包含标题的一部分。例如:列表中有三个项目 熏肉、鸡肉、猪肉 .我需要标题 “鸡舍”

       var results = (from l in db.Sites
       where list.Contains(l.site_title)
       select l.ToBusiness(l.SiteReviews)).ToList();
    

    "Local sequence cannot be used in LINQ to SQL implementation of query operators except the Contains() operator."

    方法系统。对象DynamicInvoke(System.Object[])“不支持转换为SQL。"

    3 回复  |  直到 13 年前
        1
  •  2
  •   JaredPar    16 年前

    请尝试以下操作。您可以使用Where和Any的组合来搜索子字符串匹配。

    var results = (from l in db.Sites
                    where list.Where(x => 0 != x.IndexOf(l)).Any()
                    select l.ToBusiness(l.SiteReviews)).ToList();
    
        3
  •  1
  •   Matthew Kruskamp    16 年前

    var resultSets = (from k in list
                      select (from b in db.Sites
                              where b.site_title.Contains(k)
                              select b.ToBusiness()).ToList<Business>()).ToList();
    
     List<Business> all = new List<Business>();
    
     for (int i = 0; i < resultSets.Count; ++i)
     {
         all.AddRange(resultSets[i]);
     }
    

    这是一个linq查询,将成功执行所述操作。此外,您还可以手动以纯文本构建sql查询。