从 Linq 查询中获取一个 int 而不是 string
Get an int out of a Linq query instead of string
我是 c#、Linq 和 .NET 的新手。我有一些代码执行查询以从数据库中的 table 获取最后一条记录。我尝试访问的字段是一个 int,但是当我尝试打印它时,我得到 System.Data.Objects.ObjectQuery`1[System.Int32]
。
这是代码:
public void getLastProgNumber()
{
using (var db = new IntranetEntities())
{
var value = (db.table.OrderByDescending(ai => ai.NumProgHWSW).GroupBy(a => a.NumProgHWSW).Select(g => Convert.ToInt32(g.FirstOrDefault())));
MessageBox.Show(value.ToString());
}
}
我需要将其转换为 int 类型,如果可能的话 return,谢谢。 (现在我正在使用 void
因为我想在 return 之前得到正确的结果)
如果想从数据库中获取最后一条记录table,有多种方法。但是做GroupBy肯定不是其中之一。
您可以通过执行 OrderByDescending 对行进行排序,以便具有该列最大值的行位于第一行,然后您可以执行 FirstOrDefault
.
var val = db.table.OrderByDescending(ai => ai.NumProgHWSW).FirstOrDefault();
// val is the row with maximum value of NumProgHWSW.
// you can display the value of NumProgHWSW in messagebox by doing following.
MessageBox.Show(val.NumProgHWSW);
如果您想直接从 LINQ 查询中获取变量中 NumProgHWSW
的最大值。你可以通过
var val = db.table.OrderByDescending(ai => ai.NumProgHWSW).FirstOrDefault().NumProgHWSW;
MessageBox.Show(val);
您也可以使用 Max
LINQ 方法来获取最大值,而无需执行 OrderByDescending。
var val = db.table.Max(ai => ai.NumProgHWSW);
MessageBox.Show(val);
使用 Max
是比上面两个更好的方法,因为它在数据检索之前不对 table 行进行排序,这样当 table 有大量行时它工作得更快行。
我是 c#、Linq 和 .NET 的新手。我有一些代码执行查询以从数据库中的 table 获取最后一条记录。我尝试访问的字段是一个 int,但是当我尝试打印它时,我得到 System.Data.Objects.ObjectQuery`1[System.Int32]
。
这是代码:
public void getLastProgNumber()
{
using (var db = new IntranetEntities())
{
var value = (db.table.OrderByDescending(ai => ai.NumProgHWSW).GroupBy(a => a.NumProgHWSW).Select(g => Convert.ToInt32(g.FirstOrDefault())));
MessageBox.Show(value.ToString());
}
}
我需要将其转换为 int 类型,如果可能的话 return,谢谢。 (现在我正在使用 void
因为我想在 return 之前得到正确的结果)
如果想从数据库中获取最后一条记录table,有多种方法。但是做GroupBy肯定不是其中之一。
您可以通过执行 OrderByDescending 对行进行排序,以便具有该列最大值的行位于第一行,然后您可以执行 FirstOrDefault
.
var val = db.table.OrderByDescending(ai => ai.NumProgHWSW).FirstOrDefault();
// val is the row with maximum value of NumProgHWSW.
// you can display the value of NumProgHWSW in messagebox by doing following.
MessageBox.Show(val.NumProgHWSW);
如果您想直接从 LINQ 查询中获取变量中 NumProgHWSW
的最大值。你可以通过
var val = db.table.OrderByDescending(ai => ai.NumProgHWSW).FirstOrDefault().NumProgHWSW;
MessageBox.Show(val);
您也可以使用 Max
LINQ 方法来获取最大值,而无需执行 OrderByDescending。
var val = db.table.Max(ai => ai.NumProgHWSW);
MessageBox.Show(val);
使用 Max
是比上面两个更好的方法,因为它在数据检索之前不对 table 行进行排序,这样当 table 有大量行时它工作得更快行。