Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表中项目的最高数据表值_C#_List_Linq_Datatable - Fatal编程技术网

C# 列表中项目的最高数据表值

C# 列表中项目的最高数据表值,c#,list,linq,datatable,C#,List,Linq,Datatable,我有一个如下所示的数据表: type | Value ---------- a | 5 b | 6 c | 10 d | 23 e | 8 var list = new List<string>() {a, c, e} 我有一个存储某些类型的列表,如下所示: type | Value ---------- a | 5 b | 6 c | 10 d | 23 e | 8 var list = new

我有一个如下所示的数据表:

type | Value
----------
  a  |  5
  b  |  6
  c  |  10
  d  |  23
  e  |  8
var list = new List<string>() {a, c, e}
我有一个存储某些类型的列表,如下所示:

type | Value
----------
  a  |  5
  b  |  6
  c  |  10
  d  |  23
  e  |  8
var list = new List<string>() {a, c, e}
var list=newlist(){a,c,e}
我对LINQ不是很在行,但我正在寻找一个返回列表中类型的最高值的语句。有人能帮我吗


谢谢

您可以使用类似的方法:

int maxValue = list.Max(m => 
    dt.AsEnumerable()
      .First(r => r.Field<string>("type") == m)
      .Field<int>("value")
);
intmaxvalue=list.Max(m=>
dt.AsEnumerable()
.First(r=>r.Field(“type”)==m)
.字段(“值”)
);
尝试以下操作:

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();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统数据;
命名空间控制台应用程序186
{
班级计划
{
静态void Main(字符串[]参数)
{
DataTable dt=新的DataTable();
添加(“类型”,类型(字符串));
添加(“值”,类型(int));
Add(新对象[]{“a”,0});
Add(新对象[]{“b”,0});
Add(新对象[]{“c”,0});
Add(新对象[]{“d”,0});
Add(新对象[]{“e”,0});
Add(新对象[]{“a”,5});
Add(新对象[]{“b”,6});
Add(新对象[]{“c”,10});
Add(新对象[]{“d”,23});
Add(新对象[]{“e”,8});
列表最大值=dt.AsEnumerable()
.OrderByDescending(x=>x.Field(“值”))
.GroupBy(x=>x.Field(“类型”))
.Select(x=>x.FirstOrDefault())
.ToList();
}
}
}
试试这个:

int maxValue = list.Max(m => 
    dt.AsEnumerable()
      .First(r => r.Field<string>("type") == m)
      .Field<int>("value")
);
intmaxvalue=list.Max(m=>
dt.AsEnumerable()
.First(r=>r.Field(“type”)==m)
.字段(“值”)
);

非常感谢!