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查询的结果值有误

LINQ to XML 查询不返回任何结果

我用linq to sql查询,把结果显示到DataGridView中,但是我想在DataGridView中显示列的别名

通过 LINQ-to-SQl 加载数据集