C# 在列表中添加对象的两个变量
我有一个具有“ean”和“eanAlt”属性的对象列表 这项工作:C# 在列表中添加对象的两个变量,c#,.net,linq,C#,.net,Linq,我有一个具有“ean”和“eanAlt”属性的对象列表 这项工作: List<string> eanList = new List<string>(); eanList.AddRange(toGroup.Where(a => a.ean.Length > 0).Select(b => b.ean).ToArray()); eanList.AddRange(toGroup.Where(a => a.eanAlt.Length > 0).Sele
List<string> eanList = new List<string>();
eanList.AddRange(toGroup.Where(a => a.ean.Length > 0).Select(b => b.ean).ToArray());
eanList.AddRange(toGroup.Where(a => a.eanAlt.Length > 0).Select(b => b.eanAlt).ToArray());
List eanList=新列表();
AddRange(toGroup.Where(a=>a.ean.Length>0)。选择(b=>b.ean.ToArray());
AddRange(toGroup.Where(a=>a.eanAlt.Length>0)。选择(b=>b.eanAlt.ToArray());
但是我如何在一个查询中完成它呢?(我假设使用
SelectMany
,但找不到方法)您的代码可以为中的每个元素选择ean
和eanAlt
。我认为,要获得完全相同的行为,您必须执行以下操作:
eanList.AddRange(
from a in toGroup
from b in new[] { a.ean, a.eanAlt }
where b.Length > 0
select b);
注意:此处不需要ToArray
或者,如果您更喜欢流利的语法,您可以这样做(尽管我认为这会让事情变得不那么清楚):
您的代码可以为toGroup
中的每个元素同时选择ean
和eanAlt
。我认为,要获得完全相同的行为,您必须执行以下操作:
eanList.AddRange(
from a in toGroup
from b in new[] { a.ean, a.eanAlt }
where b.Length > 0
select b);
注意:此处不需要ToArray
或者,如果您更喜欢流利的语法,您可以这样做(尽管我认为这会让事情变得不那么清楚):
要使用,您需要将ean
和eanAlt
转换为首先列出:
eanList = toGroup
.SelectMany(a => new List<string> { a.ean, a.alt })
.Where(s => !string.IsNullOrEmpty(s))
.ToList();
eanList=toGroup
.SelectMany(a=>新列表{a.ean,a.alt})
.Where(s=>!string.IsNullOrEmpty(s))
.ToList();
要使用,您需要将ean
和eanAlt
转换为首先列出:
eanList = toGroup
.SelectMany(a => new List<string> { a.ean, a.alt })
.Where(s => !string.IsNullOrEmpty(s))
.ToList();
eanList=toGroup
.SelectMany(a=>新列表{a.ean,a.alt})
.Where(s=>!string.IsNullOrEmpty(s))
.ToList();
+1这是可行的,但我想指出的是,你并不真的需要ToList
,因为AddRange
需要IEnumerable
+1这是可行的,但我想指出的是,你并不真的需要ToList
,因为AddRange
需要IEnumerable
。