我正在尝试从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;
答案 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;
这应该可以正常工作,因为它已经知道了它