2017-01-04 7 views
0

List<int>というと、list1list2の2つがあります。 LINQ式を作成する必要があります。これは、list1の各項目に対して、list2で使用可能な場合はlist3に格納するように動作するはずです。たとえば、list1には{5, 10, 15}が含まれ、list2には{3, 5, 15, 20}が含まれます。 LINQの助けを借りて、list3は{5,15}を含むべきです。私が試したことはある - 実際にあなたがList2.Contains操作を実行する必要があり、LINQ - リスト2のリスト1の項目をリスト3に取得します。

list3 = list1.Where(t1 => list2.Any(t2 => t1.Contains(t2))).ToArray(); 
述べた他の回答などを
+0

あなたのケースで何が悪かったのかファイン、あなたはこのように書いたために持っている意味? –

+0

@ un-lucky - 'int'には 'Contains'の定義が含まれていません。 –

+1

't1'はintであり、リストではありません。あなたの問題は、 't1.Contains'の代わりに' list1.Contains'を使う必要があることです。 – Abion47

答えて

1

は、Intersectはあなたのための罰金選択肢となりますが、私はあなたのコード内のエラーを修正したいと思いますList2の要素には含まれません。あなたが注意しなければならないもう1つのことは、割り当て操作のLHSはList<int>タイプであるため、.ToArray()の代わりに.ToList()を使用する必要があります。

list3 = list1.Where(t1 => list2.Contains(t1)).ToList(); 

か、またはこのような何か:

list3 = list1.Where(t1 => list2.Any(x=> x == t1)).ToList(); 
6
list3 = list1.Intersect(list2).ToList(); 
0
list3 = (from p in list1 where list2.Contains(p) select p).ToList(); 
関連する問題