LINQ从列表中选择多个元素<object []>

时间:2019-08-21 11:29:13

标签: c# linq

我有一个列表,其中装有数据库中的数据。 填充时,对象数组有10个元素 我想执行一个LINQ Select语句,该语句返回仅包含2个元素的List<object[]>。如何选择这些元素1和2。

我尝试了以下对元素0有效的方法,但是如何获得元素0和元素1?

var resultDistinct  = result.Select(p => p.GetValue(0)).Distinct();
var resultDistinct2 = result.Select(p => p.ElementAt(0)).Distinct();

4 个答案:

答案 0 :(得分:2)

您可以为此使用匿名对象。

var items = result.Select(p => new { ValueA = p.GetValue(0), ValueB = p.GetValue(1) });

然后访问每个项目

foreach(var item in items)
{
    var valueA = item.ValueA;
    var valueB = item.ValueB;
}

答案 1 :(得分:1)

您可以使用Take扩展方法:

items.Take(x);

这将返回集合的前x个项目。

如果要跳过某些元素,可以在调用Skip(x)之前使用Take。这两种方法通常用于分页。

答案 2 :(得分:0)

如果您想与众不同,然后再为2,

result.Select(p => p).Distinct().Take(2);

如果只有2,

result.Take(2);

答案 3 :(得分:0)

private class Foo
{
    public int Item1;
    public int Item2;
    public int Item3;
}

static void Main(string[] args)
{
    List<Foo> foos = new List<Foo> 
                           { 
                               new Foo() { Item1 = 1, Item2 = 2, Item3 = 3 },
                               new Foo() { Item1 = 4, Item2 = 5, Item3 = 6 },
                               new Foo() { Item1 = 7, Item2 = 8, Item3 = 9 }
                           };

    // Create a list of lists where each list has three elements corresponding to 
    // the values stored in Item1, Item2, and Item3.  Then use SelectMany
    // to flatten the list of lists.
    var items = foos.Select(f => new List<int>() { f.Item1, f.Item2, f.Item3 }).SelectMany(item => item).Distinct();

    foreach (int item in items)
        Console.WriteLine(item.ToString());

    Console.ReadLine();
}

请参阅:https://nickstips.wordpress.com/2010/09/16/linq-selecting-multiple-properties-from-a-list-of-objects/