列表中项目的最高数据 table 值
Highest data table values from items in list
我有一个数据 table 如下所示:
type | Value
----------
a | 5
b | 6
c | 10
d | 23
e | 8
我有一个存储特定类型的列表,如下所示:
var list = new List<string>() {a, c, e}
我不太擅长 LINQ,但我正在寻找 returns 列表中类型的最高值的语句。有人可以帮我吗?
谢谢!
你可以使用类似的东西:
int maxValue = list.Max(m =>
dt.AsEnumerable()
.First(r => r.Field<string>("type") == m)
.Field<int>("value")
);
尝试以下操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication186
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("type", typeof(string));
dt.Columns.Add("Value", typeof(int));
dt.Rows.Add(new object[] { "a", 0 });
dt.Rows.Add(new object[] { "b", 0 });
dt.Rows.Add(new object[] { "c", 0 });
dt.Rows.Add(new object[] { "d", 0 });
dt.Rows.Add(new object[] { "e", 0 });
dt.Rows.Add(new object[] {"a",5});
dt.Rows.Add(new object[] {"b",6});
dt.Rows.Add(new object[] {"c",10});
dt.Rows.Add(new object[] {"d",23});
dt.Rows.Add(new object[] {"e",8});
List<DataRow> max = dt.AsEnumerable()
.OrderByDescending(x => x.Field<int>("Value"))
.GroupBy(x => x.Field<string>("type"))
.Select(x => x.FirstOrDefault())
.ToList();
}
}
}
试试这个:
int maxValue = list.Max(m =>
dt.AsEnumerable()
.First(r => r.Field<string>("type") == m)
.Field<int>("value")
);
我有一个数据 table 如下所示:
type | Value
----------
a | 5
b | 6
c | 10
d | 23
e | 8
我有一个存储特定类型的列表,如下所示:
var list = new List<string>() {a, c, e}
我不太擅长 LINQ,但我正在寻找 returns 列表中类型的最高值的语句。有人可以帮我吗?
谢谢!
你可以使用类似的东西:
int maxValue = list.Max(m =>
dt.AsEnumerable()
.First(r => r.Field<string>("type") == m)
.Field<int>("value")
);
尝试以下操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication186
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("type", typeof(string));
dt.Columns.Add("Value", typeof(int));
dt.Rows.Add(new object[] { "a", 0 });
dt.Rows.Add(new object[] { "b", 0 });
dt.Rows.Add(new object[] { "c", 0 });
dt.Rows.Add(new object[] { "d", 0 });
dt.Rows.Add(new object[] { "e", 0 });
dt.Rows.Add(new object[] {"a",5});
dt.Rows.Add(new object[] {"b",6});
dt.Rows.Add(new object[] {"c",10});
dt.Rows.Add(new object[] {"d",23});
dt.Rows.Add(new object[] {"e",8});
List<DataRow> max = dt.AsEnumerable()
.OrderByDescending(x => x.Field<int>("Value"))
.GroupBy(x => x.Field<string>("type"))
.Select(x => x.FirstOrDefault())
.ToList();
}
}
}
试试这个:
int maxValue = list.Max(m =>
dt.AsEnumerable()
.First(r => r.Field<string>("type") == m)
.Field<int>("value")
);