2017-05-04 4 views
3

私はIDリストを "100,1025,5341"とオブジェクトリストとして持っています。私は私のオブジェクトリストに含まれていないIDを取得したい。Linq - linqを使用してリスト内の利用不可能なIDを取得する

例として、オブジェクトリストにプロパティとして100と5341の両方が含まれているとします(例:ID)。私は結果として1025を得たいと思っています。私はこの要求が理にかなっていないことを知っていますが、私は何とかそれを取得したいです。私は簡単に使用することができます

string idList = "100,1025,5341"; 
var objectList = _dataService.GetData(); 
var result = objectList.Any(item=> idList.Contains(item.ID)); 

IDを与えられているリスト項目を取得する。しかし、私は別の方法を取得したい。私はリストに存在しないIDを取得したい。

+0

@elgonzo私の結果によると "1025"しか得られないのですか? – user2837480

+1

idListを、objectListではなくLinqで照会します。 (objectListにはID 1025の項目がありません。したがって、objectListを照会すると1025が返されることはありません。)idList文字列を最初に配列/リストに変換します。 – elgonzo

答えて

2

使用Except

var ids= idList.Split(',').Select(int.Parse); 
var result = objectList.Where(item=> ids.Contains(item.ID)); 
var r= objectList.Except(result); 

あなたがオブジェクトリストに含まれていないIDのみをしたい場合は、あなたがidListからそれはあなたを取得します

var ids= idList.Split(',').Select(int.Parse); 
var r= ids.Except(ids.Where(i=> objectList.Any(item=> item.ID==i))); 
+0

あなたの更新を見たときに私のコメントを削除しました:) – elgonzo

+0

@octaviocclありがとう:) – user2837480

+0

あなたはようこそ@ user2837480;) – octavioccl

1

次のIdsを行うことができますId:objectListではありません。もし私があなたが望むものを正しく見つけられなかったら...

var ids = objectList.Select(x=>x.ID).ToList(); 
var otherIdsList = idList.Split(',').Select(x=>int.Parse(x)).ToList().Where(x=> !ids.Contains(x)).ToList(); 
+0

はい私はここで間違いを犯した。返信ありがとう: – user2837480

+0

それが助ける限り;) –

関連する問題