我试图在此访问数据库的突出显示列中找到最大值。我尝试了几种方法,但没有一种方法可以工作。
我需要使用 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
}
}
}
答案 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;
这可以通过根据指定的列排序所有行,然后从该列表中获取第一行,并选择该列的值。