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());