我有一个名为DynamicNode
的产品,其中包含产品名称和产品ID。
我需要使用LINQ从DynamicNode
产品中选择所有产品ID到数组。
我试过像
这样的东西 @helper PrintProductYearChart(IEnumerable<DynamicNode> products)
{
var res = products.select(x => x.filelds['Id']).ToAarray();
}
但它无法正常工作。
任何人都可以提供帮助。谢谢提前
答案 0 :(得分:12)
Select
LINQ运算符将序列的每个元素投影到新表单中。你在做什么只投影一个'Id'作为索引的元素,所以它只返回一个元素而不是Id的数组
在这里你应该指明你想要ID
@helper PrintProductYearChart(IEnumerable<DynamicNode> products)
{
var res = products.select(x => x.Id).ToArray();
}
答案 1 :(得分:2)
class Program
{
static void Main(string[] args)
{
var collection = new List<DynamicNode>(){
new DynamicNode { Id = "1", Name = "name1"},
new DynamicNode { Id = "2", Name = "name2"}
};
//Getting Ids using extension methods and lambda expressions
string[] Ids = collection.Select(x => x.Id).ToArray();
foreach (string id in Ids)
Console.WriteLine(id);
//Gettings ids using linq expression
var linqIds = from s in collection
select s.Id;
string[] lIds = linqIds.ToArray();
foreach (string id in lIds)
Console.WriteLine(id);
Console.Read();
}
}
class DynamicNode
{
public string Id { get; set;}
public string Name { get; set; }
}