LINQ to SQL 将查询结果存储在变量中
Posted
技术标签:
【中文标题】LINQ to SQL 将查询结果存储在变量中【英文标题】:LINQ to SQL Storing query results in a variable 【发布时间】:2012-03-13 14:08:42 【问题描述】:例如,我正在搜索特定的人员 ID,并且我想将该 ID 存储到局部变量或实例变量中。如何使用 LINQ to SQL 检索查询结果并将它们存储在 int 变量中? 假设我们有这个查询
from user in dbo.DoctorsName
where doctorsName = "Foo Bar"
select DOC_ID;
【问题讨论】:
什么是 DOC_ID?我真的不明白你想要什么?您想从 DB 中获取结果并将其分配给局部变量吗? DOC_ID 只是一个 ID,我想检索一个医生名为“Foo Bar”的 ID 【参考方案1】:你可以像这样使用FirstOrDefault()
:
var results = from user in dbo.DoctorsName
where user.doctorsName == "Foo Bar"
select user;
string personName = results.FirstOrDefault().Name;
【讨论】:
就这样?我将如何执行查询?没有 insertOnSubmit 吗?如果我正在寻找表 ID 怎么办?不是字符串? @user962206, 为什么需要insertOnSubmit()
??您可以选择任何user
属性以及int ID = results.FirstOrDefault().ID
这将为您选择的一行提供一个值。
这就是我需要的代码?不再?仅此而已?不再像 java 中的 executeQuery(results) 了吗?
@user962206,不多说了,就这样吧。【参考方案2】:
这应该会有所帮助。
var name = dbo.DoctorsName.Where(item => item.doctorsName = "Foo Bar").Select(item => item.Name).FirstOrDefault();
如果您的条件没有记录,则使用 FirstOrDefault() 可能会引发异常。为此,您可以尝试使用 -
var namelist = dbo.DoctorsName.Where(item => item.doctorsName = "Foo Bar").Select(item => item.Name);
If(namelist.Count() > 0)
var name = namelist.Fisrt();
【讨论】:
FirstOrDefault
在您的第一个代码中 sn-p 不会抛出异常,因为您选择的是字符串类型的 item.Name
。如果没有匹配的记录,它将简单地返回 null,即字符串类型的 default
【参考方案3】:
与此类似:
var ticketDepartment = from t in dt_tickets.AsEnumerable()
where t.Field<string>("MID") == mid
select new department = t.Field<string>("Department") ;
现在你在 ticketDepartment.department 中有了你的变量
【讨论】:
以上是关于LINQ to SQL 将查询结果存储在变量中的主要内容,如果未能解决你的问题,请参考以下文章
如何将相同的 var 类型变量分配给不同的 linq to sql 结果集?
如何在 Web 服务 asp.net 中返回 linq to sql 查询结果?
我用linq to sql查询,把结果显示到DataGridView中,但是我想在DataGridView中显示列的别名