C# C Datatable如何对相似的行进行分组

C# C Datatable如何对相似的行进行分组,c#,.net,database,C#,.net,Database,我对C还是比较陌生,我想知道是否有一个内置函数可以执行以下操作: -我正在通过DataTable将数据库中的行加载到DataGridView中 -我有许多行在一列中具有相同的值,但在另一列中具有不同的值,例如: NAME, PRICE chair, 7.00 chair, 6.00 chair, 8.00 table, 15.00 table, 17.00 plate, 4.00 plate, 4.50 是否有人知道如何循环浏览每一行,并将每种产品的最便宜价格发送到另一个列表/对象 我今天才开

我对C还是比较陌生,我想知道是否有一个内置函数可以执行以下操作:

-我正在通过DataTable将数据库中的行加载到DataGridView中

-我有许多行在一列中具有相同的值,但在另一列中具有不同的值,例如:

NAME, PRICE
chair, 7.00
chair, 6.00
chair, 8.00
table, 15.00
table, 17.00
plate, 4.00
plate, 4.50
是否有人知道如何循环浏览每一行,并将每种产品的最便宜价格发送到另一个列表/对象

我今天才开始使用DataTables和DataGridView元素,所以我有点不确定继续使用的最佳方式。基本上,我想要一个最终清单,包含每种产品中的一种,旁边有最便宜的价格。乙二醇

NAME, PRICE
chair, 6.00
table, 15.00
plate, 4.00
我不确定在这种情况下使用对象、列表或词典是否是最好的,我想知道是否有人能提供更多信息

考虑到您的datatable如下所示,感谢您的帮助

var dt=new DataTable();
dt.Columns.Add("NAME",typeof(string));
dt.Columns.Add("PRICE",typeof(float));

dt.Rows.Add("chair", 7.00);
dt.Rows.Add("chair", 6.00);
dt.Rows.Add("chair", 8.00);
dt.Rows.Add("table", 15.00);
dt.Rows.Add("table", 17.00);
dt.Rows.Add("plate", 4.00);
dt.Rows.Add("plate", 4.50);
public class Foo
{
    public string Name {get;set;}
    public float Price {get;set;}
}
您有一个对象,您想用它来表示信息,如下所示:

var dt=new DataTable();
dt.Columns.Add("NAME",typeof(string));
dt.Columns.Add("PRICE",typeof(float));

dt.Rows.Add("chair", 7.00);
dt.Rows.Add("chair", 6.00);
dt.Rows.Add("chair", 8.00);
dt.Rows.Add("table", 15.00);
dt.Rows.Add("table", 17.00);
dt.Rows.Add("plate", 4.00);
dt.Rows.Add("plate", 4.50);
public class Foo
{
    public string Name {get;set;}
    public float Price {get;set;}
}
您可以执行如下linq查询以获取最低价格和名称:

var result= (
    from row in dt.AsEnumerable()
    group row by row.Field<string>("NAME") into g
    select new Foo
    {
        Name = g.Key,
        Price=g.Min (x =>x.Field<float>("PRICE"))
    }
).ToList();
参考:


很好,谢谢你!我需要对LINQ进行更多的研究,因为与我打算做的相比,这是一个更有效、更简单的解决方案。如果我想向Foo类添加更多属性并通过LINQ查询保存它们,你能告诉我该怎么做吗?@AaronMcKelvie:没问题。我用一些资源更新了答案,让你在Anks上再次阅读,Arion,你帮了我很大的忙,我将查看这些链接!我想知道你对我的上述评论有什么建议吗?