我想獲取兩個列表lstJobs和lstPraudits中的字符串列表。我想要得到兩個列表中常見的PlanId。使用lambda表達式比較兩個列表
這裏是我的代碼 -
List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList()));
我做錯了這裏。代碼給出錯誤信息。
我想獲取兩個列表lstJobs和lstPraudits中的字符串列表。我想要得到兩個列表中常見的PlanId。使用lambda表達式比較兩個列表
這裏是我的代碼 -
List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList()));
我做錯了這裏。代碼給出錯誤信息。
使用Enumerable.Intersect
:
List<string> result = reviewModel.lstJobs.Select(x=> x.PlanId)
.Intersect(reviewModel.lstPraudits.Select(y=> y.PlanId))
.ToList();
我做錯了這裏
你的做法有什麼不對,因爲x.planId.Contains
將搜索字符串和要傳遞一個列表的方法。無論如何,這是錯誤的方法,因爲你不想比較子字符串。
感謝這是正確的方法。 –
使用Intersect是一個很好的方法..但是如果你說你在做什麼錯,我會說你在錯誤的東西上迭代。根據您的應用程序的查詢應該是:
List<string> result = reviewModel.lstJobs.Select(x => reviewModel.lstPraudits.Select(y=>y.PlanId).Contains(x.planId))
使用Where
兩個List之間進行比較。
List<string> result =
reviewModel.Where(x => x.planId.Contains(reviewModel.lstPraudits.Select(y=>y.PlanId)))
.ToList();
除非您自己定義了這些方法,否則錯誤消息的來源可能會錯過拼寫標識符,如'Slect'和'toList'。 –
您錯過拼寫選擇 – Developer
planId的類型是什麼?它是一個集合嗎?另外我看到Select的拼寫在內部查詢中是錯誤的。 –