列表中项目的最高数据 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")
);