我正在收集一些 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();
答案 0 :(得分:2)
SuryaKavitha,
传入一个要比较的对象可能会也可能不会工作,因为sql不会理解你指的是哪个字段。你可能需要尝试类似的东西:
<强> [编辑] 强>
theAncestors
.Where(x => x.myproperty.Contains(p.HierarchyNodeEntity.anotherproperty))
这是我的初步建议(您也可以将Contains
替换为StartsWith
或EndsWith
)。 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