2

我有一些HierarchyNodeEntity值的集合和Ancestors的集合。现在我想通过使用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();
4

2 回答 2

2

苏里亚卡维塔,

它可能会也可能不会通过传入一个对象来进行比较,因为 sql 不会理解您所指的字段。您可能需要尝试以下方法:

[编辑]

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

这是我最初的建议(你也可以用ContainsorStartsWith代替EndsWith)。Yopu 甚至可以使用直接相等检查,即:

theAncestors
    .Where(x => x.myproperty == p.HierarchyNodeEntity.anotherproperty)
于 2012-07-27T11:35:58.900 回答
0

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

theAncestors.Count(x => x.ToString().Contains(p.ToString())) > 0
于 2012-07-27T11:40:10.567 回答