Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在列表中添加对象的两个变量_C#_.net_Linq - Fatal编程技术网

C# 在列表中添加对象的两个变量

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

我有一个具有“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());
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