为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕斯709654 2023-09-16 14:59:50
我有一个列表,其中填充了数据库中的数据。对象数组在填充时有 10 个元素,我想做一个 LINQ Select 语句,它返回List<object[]>只有 2 个元素的 a。我如何选择这些元素 1 和 2。我已经尝试了以下适用于元素 0 的方法,但是如何获取元素 0 和元素 1 ?var resultDistinct  = result.Select(p => p.GetValue(0)).Distinct(); var resultDistinct2 = result.Select(p => p.ElementAt(0)).Distinct();
查看完整描述

4 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

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


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;

}


查看完整回答
反对 回复 2023-09-16
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您可以使用Take扩展方法:

items.Take(x);

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

如果你想跳过某些元素,可以使用Skip(x)before 调用Take。这两种方法经常用于分页。


查看完整回答
反对 回复 2023-09-16
?
弑天下

TA贡献1818条经验 获得超7个赞

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

}


查看完整回答
反对 回复 2023-09-16
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

如果你想要不同然后2,那么,

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

如果只有2的话,

result.Take(2);


查看完整回答
反对 回复 2023-09-16
  • 4 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信