从数据库返回字符串值

时间:2015-12-03 17:29:49

标签: c# linq linq-to-sql

我试图从数据库中获取Patient的{​​{1}},但是当我运行这段代码时,我得到的只是一个Linq表达式字符串。

Firstname

使这个表达式返回我需要的实际值的方法是什么?

3 个答案:

答案 0 :(得分:5)

name = data.Patients.Where(x => x.BedNumber.Equals(bedNumber))
                    .Select(x => x.Firstname).ToString();

应该是:

name = data.Patients.Where(x => x.BedNumber.Equals(bedNumber))
                    .Select(x => x.Firstname).FirstOrDefault();

您需要实际选择.First().FirstOrDefault()。现在,您将整个IQueryable语句转换为字符串。

答案 1 :(得分:1)

问题是ToString调用,它为您提供 Linq表达式

可能的解决方案。使用FirstOrDefault获取名字。

name = data.Patients.Where(x => x.BedNumber.Equals(bedNumber)).Select(x => x.Firstname).FirstOrDefault();

或者使用string.Join获取一个字符串中的所有名称,其中包含,之类的分隔符(传递给string.join的第一个参数)。

name = string.Join(", " ,data.Patients.Where(x => x.BedNumber.Equals(bedNumber)).Select(x => x.Firstname));

答案 2 :(得分:1)

Where方法会返回Enumerable<T>个结果(患者),而Select方法会返回一个新的Enumerable<string>,每个患者都会Firstname

不是将Enumerable<string>转换为字符串,而是需要使用SingleFirst等方法从中获取一个对象。

(如果Single中有多个对象,Enumerable<T>将抛出异常,如果First中没有对象,Enumerable<T>将抛出异常。如果您希望SingleOrDefault而不是例外情况,请使用FirstOrDefaultnull。)