2

HierarchyNodeEntity値のコレクションとAncestorsのコレクションがあります。ここで、 db.HierarchyNodeEntitiesの値を使用してtheAncestorsから値を取得したいと考えています。

ここでは、Containsを使用してこれを実現しています。しかし、うまくいきません。このContains as Like演算子をSQLで使用したいと思います。この 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))

Containsこれは私の最初の提案です(StartsWithまたはを置き換えることもできますEndsWith)。Yopu は、単純な等値チェックでも動作する可能性があります。つまり、次のようになります。

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

私が正しければ、like '%abc%'SQL表記が必要です。最初に値をstring型に変換してから、contains を使用する必要があります。IEnumberable.Contains違うから。

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