我有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
。
答案 1 :(得分:2)
将字符串从列表1中拉出,并将其连接到列表2中的字符串列表:
_iRepository.Select(x => x.Name).Concat(_aRepository.Select(x => x.Name)).ToList()
PS;我不确定你有2个字符串列表 - 如果_iRepository
是字符串列表,你将无法选择x.Name
,因为字符串没有.Name属性!列表是List<SomeObjectThatHasANameProperty>
,当然......?
答案 2 :(得分: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);