0

我正在尝试从 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

4 回答 4

3

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

int customerId = (from a in db.Customer
                  where a.userName == customerName
                  select a.customerId).First();
于 2012-04-16T16:35:46.683 回答
1

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

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

如果发现多于或少于一行,这将引发异常,根据您的情况,这有时很有用。

于 2012-04-16T17:45:12.423 回答
0

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

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

于 2012-04-16T16:36:13.273 回答
0

对于这个问题,我可以推荐的另一个建议是使用 First 或 default。

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

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

于 2012-04-16T16:39:29.717 回答