如何从LINQ C#中的数据库中获取数据?
问题描述:
我怎样才能从我的数据库中得到最新的“id”,并将其放入文本框 注意:我必须从我的数据库中返回最新的id。如何从LINQ C#中的数据库中获取数据?
看看这个方法:
public void refresh()
{
var query = from qc in db.tbl_viewClients select qc.id ;
int a = Convert.ToInt32(query.SingleOrDefault().ToString());
txt_id.Text = Convert.ToString(a);
}
答
由于Max
会丢InvalidOperationException
,所以您应该处理没有记录。
var query = from qc in db.tbl_viewClients select qc.id;
if (query.Any())
{
var max = query.Max();
txt_id.Text = max.ToString();
// do rest of work
}
else
{
//handle the case when you have no record
}
但这种方法枚举查询两次!
这是一个窍门!
var query = from qc in db.tbl_viewClients select (int?)qc.id;
var max = query.Max();
if (max.HasValue)
{
txt_id.Text = max.ToString();
// do rest of work
}
else
{
//handle the case when you have no record
}
答
假设id
存储为int和最新意味着最大的ID,你可以简单地使用Max()
*:
int a = query.DefaultIfEmpty(0).Max();
否则,信息确定最新,如创建日期,从问题中缺失。
*)加DefaultIfEmpty(0)
返回0
如果query
返回没有结果。
答
请尝试此操作。
var query = from t in table orderby t.Id descending
select t.Id;
object result = query.FirstOrDefault();
希望有所帮助。
答
如果你正在尝试做我认为你自己的东西(插入一些东西到数据库中,然后查询它以找到你认为是刚刚插入的ID),然后停下来!这样做不会确保您检索的ID是您需要的ID,因为您的数据库可以随时由其他人更改(并发性)。但是,考虑到这只是一个测试,只是你是谁使用它,你需要知道你刚插入的ID,那么这样做的方法是:
假设你使用LINQtoSQL或实体框架,当你添加一个对象到上下文并调用SaveChanges(),紧接着这个对象将会填充它的ID(或主键)字段。请检查!
您能否提供更多信息。什么是表结构。 –
你确定你想要'最高数字',而不是你刚才插入的行的ID吗?因为否则并发会导致麻烦。而且效率很低。 –
ID或密钥并不意味着在用户界面中显示特定数据库生成的值。不能指望多个用户看到相同的顶级ID,并让他们认为他们会在他们的交易中获得顶级ID + 1的价值。 –