2017-02-14 6 views
0

私は2つのリストを定義しましたが、今度はのリストをに置き換えます。filterRIDSのRID値に一致するプロパティがApplicationです。intリストのプロパティ値でリストをフィルタリングする方法はありますか?

しかし、LINQをステップスルーしてescHistoryをフィルタリングすると、返り値がゼロになります。リストには、filterRIDSで定義されたものと一致するApplicationプロパティ値を持つレコードが含まれていますが、

質問:

リストを別のリストのプロパティ値でフィルタリングするにはどうすればよいですか?

これは、フィルタコードの基本的な要点である:

List<int> filterRIDS = new List<int> { 115841, 200463 }; 
List<Escalation> escHistory = new List<Escalation>(); 

//Filter list by RID's matching 
escHistory = escHistory.Where(r => r.Application.Contains(filterRIDS.ToString())).ToList<Escalation>(); 

答えて

3

あなたは、クエリ

escHistory = escHistory.Where(r => filterRIDS.Contains(int.Parse(r.Application))).ToList(); 
+1

'r.Application'は' 123456 MyTestApp'のような文字列型であることを忘れてしまいました。だから私の場合は、intに解析する前に部分文字列を取得するだろう。 'escHistory = escHistory.Where(r => filterRIDS.Contains(int.Parse(r.Application.Substring(0、6)))))ToList(); ' –

+2

@BrianJまたはあなたは' r.Application.Split( '')を分割します.First() ' –

1

問題がList<int>クラスの名前を返したfilterRIDS.ToString()あるスワップ:の

"System.Collections.Generic.List`1[System.Int32]" 

をもちろん、にこの値を含む履歴オブジェクトはありませんフィールド。あなたはApplication文字列が与えられたリストから任意の文字列が含まれているかどうかを確認したい場合は、次の

escHistory = escHistory 
    .Where(r => filterRIDS.Any(id => r.Application.Contains(id.ToString()))) 
    .ToList(); 
0

私はthisは、あなたが探しているものだと思います。小さな変更で、intリストを文字列に変換します。

関連する問題