Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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使用LINQ从结构列表中提取ID_C#_Linq - Fatal编程技术网

C# C使用LINQ从结构列表中提取ID

C# C使用LINQ从结构列表中提取ID,c#,linq,C#,Linq,我有一份结构清单: struct MyStruct{ int ID; string name; string surname; } List<MyStruct> list1 = new List<MyStruct>(); ///here the list is being updated so that it has some elements 现在我想从列表1中提取所有ID并放入另一个列表: List<int> list2 = ne

我有一份结构清单:

struct MyStruct{
    int ID;
    string name;
    string surname;
}
List<MyStruct> list1 = new List<MyStruct>();
///here the list is being updated so that it has some elements
现在我想从列表1中提取所有ID并放入另一个列表:

List<int> list2 = new List<int>();
list2.AddRange(list1.GetIds() /*LINQ HERE*/);
诀窍是我想用LINQ来做这件事,但我还是不太明白。我知道可以用普通for循环完成,但我想使用AddRange和LINQ。

您可以使用Select方法。例如:

List<int> list2 = new List<int>();
var allIds = list1.Select(n => n.ID);
list2.AddRange(allIds);
如果列表为空,则不必使用AddRange方法。您只需将Select方法的结果分配给目标列表。

您可以使用Select方法。例如:

List<int> list2 = new List<int>();
var allIds = list1.Select(n => n.ID);
list2.AddRange(allIds);
如果列表为空,则不必使用AddRange方法。您应该只将Select方法的结果分配给您的目标列表。

我认为GetIds不存在,您希望用LINQ来代替它。您需要的方法是:

您也可以使用ToList而不是AddRange:

我认为getid是不存在的,你想用LINQ来代替它。您需要的方法是:

您也可以使用ToList而不是AddRange:

试试这个

   list2.AddRange(list1.Select(C => C.ID).ToList());
试试这个

   list2.AddRange(list1.Select(C => C.ID).ToList());

是的,假设正确,我只是把getid放在那里,因为我知道应该放一些命令来提取id,我在考虑Select,但不确定如何使用它。谢谢:是的,你假设正确,我只是把getid放在那里,因为我知道应该放一些命令来提取id,我在考虑Select,但不确定如何使用它。谢谢您:
   list2.AddRange(list1.Select(C => C.ID).ToList());