gpt4 book ai didi

c# - 从 Linq 中的列表中选择多个字段

转载 作者:IT王子 更新时间:2023-10-29 03:33:24 25 4
gpt4 key购买 nike

在 ASP.NET C# 中我有一个结构:

public struct Data
{
public int item1;
public int item2;
public int category_id;
public string category_name;
}

我有一份 list 。我想选择 category_idcategory_name,运行 DISTINCT,最后在 category_name ORDERBY.

这是我现在拥有的:

List<Data> listObject = getData();
string[] catNames = listObject
.Select(i=> i.category_name)
.Distinct()
.OrderByDescending(s => s)
.ToArray();

这显然只是获取类别名称。我的问题是,我如何获得多个字段,我将把它存储在什么数据结构中(不是 string[])?

编辑

使用结构列表并不是一成不变的。如果建议更改我的支持数据结构以使选择更容易(我会写很多这样的东西),那么我很乐意接受建议。

最佳答案

匿名类型允许您将任意字段选择到稍后在您的代码中强类型化的数据结构中:

var cats = listObject
.Select(i => new { i.category_id, i.category_name })
.Distinct()
.OrderByDescending(i => i.category_name)
.ToArray();

由于您(显然)需要存储它供以后使用,您可以使用 GroupBy 运算符:

Data[] cats = listObject
.GroupBy(i => new { i.category_id, i.category_name })
.OrderByDescending(g => g.Key.category_name)
.Select(g => g.First())
.ToArray();

关于c# - 从 Linq 中的列表中选择多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com