我有一份关于" 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).Select(b => b.eanAlt).ToArray());
但是如何在一个查询中执行此操作? (我想SelectMany
,但无法找到)
答案 0 :(得分:4)
要使用SelectMany,您需要先将ean
和eanAlt
转换为列表:
eanList = toGroup
.SelectMany(a => new List<string> { a.ean, a.alt })
.Where(s => !string.IsNullOrEmpty(s))
.ToList();
答案 1 :(得分:3)
您的代码可以为ean
中的每个元素选择eanAlt
和toGroup
。我想要得到完全相同的行为,你必须做这样的事情:
eanList.AddRange(
from a in toGroup
from b in new[] { a.ean, a.eanAlt }
where b.Length > 0
select b);
注意ToArray
这里不需要。
或者如果您更喜欢流利的语法,那么您可以这样做(虽然我认为它使得发生的事情略显不清楚):
eanList.AddRange(toGroup.SelectMany(a => new[] { a.ean, a.eanAlt }).Where(b => b.Length > 0));