MVC3通过LINQ选择int值

时间:2012-04-16 16:33:59

标签: asp.net-mvc-3 linq

我正在尝试从Customer表中获取customerId。

然而,当我尝试制作它时,它有错误说'不能隐式转换类型'System.Linq.Iqueryable'到'int''

我如何获得customerId?

谢谢。

这是我的编码。

int customerId = from a in db.Customer
                            where a.userName == customerName
                            select a.customerId; 
                           //it has error in here.

order.customerId = customerId;

4 个答案:

答案 0 :(得分:3)

您的查询可能会返回多行。您需要告诉LINQ您只需要第一个(或单个)结果:

int customerId = (from a in db.Customer
                  where a.userName == customerName
                  select a.customerId).First();

答案 1 :(得分:1)

当我知道应该只有一行时,我喜欢使用.Single()函数。

int customerId = (from a in db.Customer
                  where a.userName == customerName
                  select a.customerId).Single(); 

如果找到多于或少于一行,则抛出异常,根据您的情况,这有时很有用。

答案 2 :(得分:0)

以这种方式使用它: var customer = db.Customer.FirstOrDefault(c => c.userName == customerName) var id = customer.Id

Select返回IEnumerable,因此无法将其转换为int。

答案 3 :(得分:0)

我可以为此问题推荐另一个建议是使用First或default。

var customerId = (from a in db.Customer
                            where a.userName == customerName
                            select a.customerId).FirstOrDefault(); 

order.customerId = customerId;这应该可以正常工作,因为它已经知道了它