使用Linq选择Id(s)

时间:2014-01-18 08:57:06

标签: c# linq umbraco

我有一个名为DynamicNode的产品,其中包含产品名称和产品ID。 我需要使用LINQ从DynamicNode产品中选择所有产品ID到数组。

我试过像

这样的东西
 @helper PrintProductYearChart(IEnumerable<DynamicNode> products)
{

    var res = products.select(x => x.filelds['Id']).ToAarray();
}

但它无法正常工作。

任何人都可以提供帮助。谢谢提前

2 个答案:

答案 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; }
}