数据集中的最大价值

时间:2015-11-09 16:35:15

标签: c# linq

我试图在此访问数据库的突出显示列中找到最大值。我尝试了几种方法,但没有一种方法可以工作。

table

我需要使用 LINQ 。最好是from x in y [...] select x;语句。如果我不能用上述内容,那么使用 LINQ 的任何东西都可能就足够了。如果你能解释为什么你的答案有效,那将对我有所帮助。

编辑:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


 namespace CarStatistics
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'honestRalphsUsedCarsDataSet.tblCars' table. You can move, or remove it, as needed.
            this.tblCarsTableAdapter.Fill(this.honestRalphsUsedCarsDataSet.tblCars);

        }

        private void btnCarAmount_Click(object sender, EventArgs e)
        {
            lblCarAmount.Text = "Our inventory consists of " + (dgvCars.RowCount - 1).ToString() + " cars!";
            lblCarAmount.Visible = true;
        }

        private void btnMstExpensive_Click(object sender, EventArgs e)
        {
            //Code to find Max
        }
    }
}

2 个答案:

答案 0 :(得分:4)

使用的适当linq方法是[Enumerable.Max][1]。有许多重载,但你想要的是一个适用于IEnumerable<decimal>的重载(假设你的列的类型是十进制的)。这将用作:

source.Select(x=>x.Price).Max()

source将是您拥有数据的IEnumerable,x.Price假定该列的值可通过名为Price的属性获得。

另一个替代方法是使用max的重载,它需要Func<TSource, decimal>来告诉它使用哪个数据作为最大值:

source.Max(x=>x.Price)

我不确定除了可读性之外还有很多不同之处。我可能倾向于第一个,特别是因为在这个问题的初稿中我错了第二个实际返回的内容(感谢Robert McKee纠正我)。 :)

答案 1 :(得分:1)

这样的事情应该是你正在寻找的东西:

var maxPrice = db.Items.OrderByDescending(i => i.Value).FirstOrDefault().Value;

这可以通过根据指定的列排序所有行,然后从该列表中获取第一行,并选择该列的值。