【发布时间】:2010-11-15 05:40:11
【问题描述】:
在 ASP.NET C# 中,我有一个结构:
public struct Data
{
public int item1;
public int item2;
public int category_id;
public string category_name;
}
我有一份清单。我想选择category_id 和category_name,运行DISTINCT,最后在category_name 上运行ORDERBY。
这是我现在拥有的:
List<Data> listObject = getData();
string[] catNames = listObject
.Select(i=> i.category_name)
.Distinct()
.OrderByDescending(s => s)
.ToArray();
这显然只是获取类别名称。我的问题是,我如何获得多个字段,我将把它存储在什么数据结构中(不是string[])?
编辑
使用结构列表并不是一成不变的。如果建议更改我的支持数据结构以使选择更容易(我会写很多这样的),那么我很乐意接受建议。
【问题讨论】:
-
虽然它与 LINQ 端无关,但我会强烈建议您不要使用可变结构或公共字段。就我个人而言,我一开始很少创建结构体,但可变结构体只是自找麻烦。
-
@Jon Skeet 谢谢。我会将其转换为具有私人成员的常规课程。
-
@Midhat:可变结构会导致各种问题,因为它们的行为与人们期望的不同。并且公共字段完全缺乏封装。
-
@Jon Skeet。您能否更具体地了解可变结构的陷阱,或者指出我的阅读内容。
标签: c# linq data-structures