2017-11-23 7 views
1

私は2つの文字列のリストを持っていますが、それらをマージしていますが、特定の列を選択しています。 私はそれを得ることができたが、私はより良い方法があると確信しています:Linqをマージする2列の列を選択

public List<string> GetAll() 
{ 
    var i = _iRepository.GetAll().Select(x => x.Name).ToList(); 
    var a = _aRepository.GetAll().Select(x => x.Name); 
    i.AddRange(a); 
    return i; 
} 
+0

はあなたを行います結果リストにユニークな要素が必要ですか? –

答えて

3
List<string> allNameList = _iRepository.GetAll() 
    .Select(x => x.Name) 
    .Concat(_aRepository.GetAll().Select(x => x.Name)) 
    .ToList(); 

あなたは重複を削除したい場合は、Unionの代わりConcatを使用しています。

2

は、リスト1のうち、文字列を引き、リスト2から文字列のリストにそれを連結します。

_iRepository.Select(x => x.Name).Concat(_aRepository.Select(x => x.Name)).ToList() 

ps; 2つの文字列のリストがわからない - _iRepositoryが文字列のリストの場合、文字列に.Nameプロパティがないため、x.Nameを選択できません。リストはList<SomeObjectThatHasANameProperty>、確かに..ですか?

0

(GETALL(両方を想定して)同じ型を返す)短い:

return _iRepository.GetAll().Concat(_aRepository.GetAll()).Select(x => x.Name).ToList(); 

もう少し効率的(より少ないメモリ割り当て)のgetAll()は、新しいリストを返す場合:

var list = _iRepository.GetAll(); 
list.AddRange(_aRepository.GetAll()); 
return list.ConvertAll(x => x.Name); 
関連する問題