0

2 つの文字列リストがあります。

1:

new List<string>{ "jan", "feb", "nov" }

2:

new List<string>{ "these are the months", "this is jan,", "this is feb,", "this is mar,",  "this is jun,", "this is nov"}

結果を次のようにしたいと思います。

List<string>{ "these are the months", "this is jan,", "this is feb,", "this is nov"}

今、私は乱雑な分割を行っています。次に、ネストされた foreach を含む linq を実行しています。

しかし、もっと簡単な方法が必要です。おそらく、左側にリスト 2 を持つ linq left JOIN を考えましたが、それが正しいアプローチであったとしても、それをやってのける方法はわかりません。

何か案は?

ありがとう。

4

1 に答える 1

2

少しのLinqでこれを行うことができます:

var list1 = new List<string>{ "jan", "feb", "nov" };
var list2 = new List<string>{ "these are the months", ... };

var result = list2.Where(x => list1.Any(y => x.Contains(y))).ToList();

ただし、"these are the months"には の文字列が含まれていないため、この結果セットには最初の要素が含まれませんlist1。これが要件である場合は、次のようなことを行う必要がある場合があります。

var result = list2.Take(1).Concat(list2.Skip(1).Where(x => list1.Any(y => x.Contains(y)))).ToList();
于 2013-11-14T03:46:18.013 に答える