2012-01-22 19 views
4

Imテーブルを取得するデータベースからのタグ。Linq配列との交差

var taglist = Model.Tags.Select(x => x.TagName.ToLower()).ToArray(); 

は、私はその文字列を取得するには、別の文字列の配列と比較するよ:

表には、私は文字列のリストを取得するには、このような何かをやっている列のIDとTagNameは

を持っています

var intersectList = tagList.Intersect(anotherList); 

私のリストはありますが、今はtagListに対応する交差リストに残っている各アイテムのIDも必要です。 (ちょうどint型配列でもかまいません)

これを行うには誰も助けてください。

答えて

6

交差を使用しないでください。同じタイプのコレクションでのみ機能します。単純な結合や他の形式のフィルタリングを行うことができます。文字列リストをHashSetにスローし、そのセットにTagNameを含むタグでフィルタするのが最も簡単です。こうすることで、タグを非表示にしてIDやその他のプロパティを保持することができます。

var stringSet = new HashSet<string>(anotherList); 
var tagList = Model.Tags.Where(t => stringSet.Contains(t.TagName)).ToList(); 

リストに入れてください。あなたが特に配列を必要としない限り、それらを配列に投げ込まないでください(配列を必要とするメソッドで使用するため)。

0

おそらくArrayの代わりにDictionary<int, string>を使用しますか?

0

あなたは何でした:

var intersectIds = Model.Tags 
    .Where(tag => anotherList.Contains(tag.TagName)) 
    .Select(tag => tag.Id) 
    .ToList();