2016-08-29 9 views
2

lstJobsとlstPrauditsの2つのリストに基づいて文字列のリストを取得したいとします。私は両方のリストに共通のPlanIdを取得したい。ラムダ式を使用して2つのリストを比較する

は、ここで私はここで間違ってやっている何を私のコード -

List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList())); 

です。コードがエラーメッセージを出しています。

+1

これらのメソッドを自分で定義していない限り、エラーメッセージのソースには、「Slect」や「toList」などの綴りのスペルミスがある可能性があります。 –

+0

あなたのスペルが間違っています – Developer

+0

planIdのタイプは?それはコレクションですか?また、Selectのスペルが内側のクエリで間違っているのを見る。 –

答えて

3

使用Enumerable.Intersect

List<string> result = reviewModel.lstJobs.Select(x=> x.PlanId) 
    .Intersect(reviewModel.lstPraudits.Select(y=> y.PlanId)) 
    .ToList(); 

x.planId.Containsは、サブストリングを検索すると、あなたはメソッドにリストを渡しているので、あなたのアプローチは間違っている、ここで何を私が間違っているの

。とにかく部分文字列を比較したくないので、間違ったアプローチです。

+0

ありがとうございました。 –

0

インターセクトを使用するのは良いアプローチです。しかし、あなたが間違っていることを言うなら、間違ったことを繰り返していると言います。あなたのappproachあたりとしてクエリは次のようになります。両方のリストの間で比較する

List<string> result = reviewModel.lstJobs.Select(x => reviewModel.lstPraudits.Select(y=>y.PlanId).Contains(x.planId)) 
0

使用Where

List<string> result = 
     reviewModel.Where(x => x.planId.Contains(reviewModel.lstPraudits.Select(y=>y.PlanId))) 
     .ToList(); 
関連する問題