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 将查询结果存储在变量中的主要内容,如果未能解决你的问题,请参考以下文章