Asp.net mvc 如何在asp.net mvc中查找记录(无id)

Asp.net mvc 如何在asp.net mvc中查找记录(无id),asp.net-mvc,database,entity-framework,Asp.net Mvc,Database,Entity Framework,如何查找没有id的记录 这不管用 Wallet wallet = db.Wallet.Where(n => n.Name == My.Name && n.UserId == userId); 这个很好用 Wallet wallet = db.Wallet.Find(); Linq查询可以返回多个结果,并且当您仅为单个钱包分配了空间时,无法分配IEnumerable。如果你只想要一个结果,你应该使用适当的方法来缩小它 返回序列中唯一的元素,如果序列中没有一个元素,则引

如何查找没有id的记录

这不管用

Wallet wallet = db.Wallet.Where(n => n.Name == My.Name && n.UserId == userId);
这个很好用

Wallet wallet = db.Wallet.Find();

Linq查询可以返回多个结果,并且当您仅为单个
钱包
分配了空间时,无法分配
IEnumerable
。如果你只想要一个结果,你应该使用适当的方法来缩小它

  • 返回序列中唯一的元素,如果序列中没有一个元素,则引发异常

  • 。 返回序列的唯一元素,如果序列为空,则返回默认值;如果序列中有多个元素,此方法将引发异常

  • 返回序列的第一个元素

  • 返回序列的第一个元素,如果序列不包含元素,则返回默认值

例如:

Wallet wallet = db.Wallet.Where(n => n.Name == My.Name && n.UserId == userId).Single();
始终将Linq查询的返回类型与您试图将其分配给的内容进行比较。VisualStudio中的Intellisense将帮助您实现这一点

注意:这些方法都有重载,不需要使用“Where”,您可以将筛选器lambda直接放入调用中,如中所示:

Wallet wallet = db.Wallet.Single(n => n.Name == My.Name && n.UserId == userId);

你使用哪种风格取决于你自己,你认为哪种风格更具可读性。性能差异可能可以忽略不计(尽管可能值得测试)。

我已经有一段时间没有看到这一点了,但是如果您只返回一个结果,请使用FirstOrDefault代替Where。当您说“不起作用”时,您需要解释为什么它不起作用。它是否给出编译错误?怎么了?您是否尝试过搜索该错误以查看其他人所做的操作?@TinMan7757谢谢