2016-12-01 9 views
0

私は、Contain()メソッドを含むlinq文を持っています。私はこれを使用して、nameがnullではない配列からすべてを選択できますが、オブジェクトarray2の同じ名前を含むarray1のオブジェクトのみを選択します。array2のidを含むarray1からすべてを選択する方法は?

私は結果を返すことができましたが、オブジェクト値が必要な場所では、真または偽の表示ができました。

コード

var response = JsonConvert.DeserializeObject<FamilyNames>(result); 
List<object> data = new List<object>(); 

ClassName className = new ClassName(); 

object [] getNames = className.GetType() 
    .GetProperties() 
    .Select(p => 
     { 
     object value = p.Name; 
     return value == null ? null : value.ToString(); 
     }) 
     .ToArray(); 

foreach (var obj in response.items.Where(n => n.name != null).DistinctBy(x => x.name).Select(a => getNames.Contains(a.initialName))) 
{ 
    data.Add(obj); 
} 
client.Dispose(); 
return Json(data, JsonRequestBehavior.AllowGet); 
} 

結果は次のとおりです。

["True","False","True"] 

私はselect文を使用しない場合、私は私のオブジェクトを取得:

[ 
    { 
    "initalName": "BD", 
    "firstName": "Bob", 
    "LastName": "Dilan" 
    }, 
    { 
    "initalName": "HT", 
    "firstName": "Harry", // the initialName doesn't exist in list so need to remove this object 
    "LastName": "Thomas" 
    }, 
    { 
    "initalName": "LJ", 
    "firstName": "Lindsey", 
    "LastName": "Jones" 
    } 
] 

initalNameではありませんgetNames配列内に存在するため、削除する必要があります。どんな助言も、特にそのアプローチについて高く評価されるだろう。結果は次のようになります。

[ 
     { 
     "initalName": "BD", 
     "firstName": "Bob", 
     "LastName": "Dilan" 
     }, 
     { 
     "initalName": "LJ", 
     "firstName": "Lindsey", 
     "LastName": "Jones" 
] 

答えて

2

問題は、このLINQ式では最後にBoolを出力として選択することです。 (.Contains()はブール値を返します)。 このような理由から、あなたの式はBoolのリストをretunrします。意図したフィルタリングを行うと、彼らがそうであるように、元のオブジェクトを保持するかを.Where(と)単に.Selectを(置き換え、あなたが望むものacheaveする

response.items 
.Where(n => n.name != null) 
.DistinctBy(x => x.name) 
.Select(a => getNames.Contains(a.initialName)) 

)、(任意の投影を行うことはありません)とあなたは期待される結果を取得します:私は今、非常に愚かな感じ

response.items 
.Where(n => n.name != null) 
.DistinctBy(x => x.name) 
.Where(a => getNames.Contains(a.initialName)) 
+0

ああ親愛なる、説明のために親切にありがとうございます:) – user3515765

+0

だけ愚かな質問は、何が求められていないです!どういたしまして! – Vari

関連する問題