如何使用C#在LINQ中使用Contains

时间:2012-07-27 11:30:22

标签: c# linq

我正在收集一些 HierarchyNodeEntity 值以及祖先的集合。 现在我想通过使用 db.HierarchyNodeEntities 的值来从 theAncestors 获取值。

我在这里使用包含来实现这一目标。但它不起作用。我希望在SQL中将包含用作 Like 运算符。任何人都可以告诉我如何在这个LINQ中使用Like。

先谢谢。

这是代码:

var q = from p in db.HierarchyNodeEntities                         
                      where theAncestors.Contains(p.HierarchyNodeEntity)
                      group p by p.PropertyKey
                         into prop
                         select
                             prop.OrderByDescending(p => p.LevelId).
                             FirstOrDefault();


     var list = q.ToList();

2 个答案:

答案 0 :(得分:2)

SuryaKavitha,

传入一个要比较的对象可能会也可能不会工作,因为sql不会理解你指的是哪个字段。你可能需要尝试类似的东西:

<强> [编辑]

theAncestors
    .Where(x => x.myproperty.Contains(p.HierarchyNodeEntity.anotherproperty))

这是我的初步建议(您也可以将Contains替换为StartsWithEndsWith)。 Yopu甚至可以进行直接的平等检查,即:

theAncestors
    .Where(x => x.myproperty == p.HierarchyNodeEntity.anotherproperty)

答案 1 :(得分:0)

如果我说得对,你需要like '%abc%' sql表示法。 您需要先将值转换为string类型,然后才使用contains。因为IEnumberable.Contains不同。

theAncestors.Count(x => x.ToString().Contains(p.ToString())) > 0