如何找到没有ID的记录?
这不起作用
Wallet wallet = db.Wallet.Where(n => n.Name == My.Name && n.UserId == userId);
这很好用
Wallet wallet = db.Wallet.Find();
答案 0 :(得分:1)
Linq查询可以返回多个结果,当您仅为单个IEnumerable<Wallet>
分配空间时,无法分配Wallet
。如果您只想要一个结果,则应使用适当的方法缩小范围。
返回序列的唯一元素,如果序列中没有一个元素,则抛出异常。
返回序列的唯一元素,如果序列为空,则返回默认值;如果序列中有多个元素,则此方法抛出异常。
返回序列的第一个元素。
返回序列的第一个元素,如果序列不包含元素,则返回默认值。
举个例子:
Wallet wallet = db.Wallet.Where(n => n.Name == My.Name && n.UserId == userId).Single();
始终将Linq查询的返回类型与您尝试将其分配的内容进行比较。 Visual Studio中的Intellisense将为您提供帮助。
请注意,这些方法都有重载,无需使用“Where”,您可以将过滤器lambda直接放入调用中,如:
Wallet wallet = db.Wallet.Single(n => n.Name == My.Name && n.UserId == userId);
您使用哪种风格取决于您,您认为哪种风格更具可读性。性能差异可能微不足道(尽管可能值得测试)。