这是一个供应商页面,其中有多个用户具有不同的角色。现在它只有2个用户类型,我有一个布尔方法,它使用linq到sql来检查它是否是最初为供应商进行更改的用户。我得到的错误是序列返回多个。
public static bool BoolUser1(string user)
{
bool user1Bool = false;
if (user == String.Empty)
{
return false;
}
if (user != null)
{
var context = new rempscoDataContext();
string user1 = (from u in context.vendors
where u.user1_info_edit_user == user
select u).SingleOrDefault().user1_info_edit_user;
if (user1 == user)
user1Bool = true;
}
return user1Bool;
}
答案 0 :(得分:0)
如果序列中有多个元素,那么SingleOrDefault将抛出异常。
返回序列的唯一元素,如果是,则返回默认值 序列是空的;如果有更多,此方法会抛出异常 比序列中的一个元素。
也许您的过滤器应该更具体。您也可以迭代整个序列以获得所需的值,或尝试使用FirstOrDefault(),但这可能无法返回正确的结果。
更多关于SingleOrDefault()和FirstOrDefault()之间的区别:
LINQ: When to use SingleOrDefault vs. FirstOrDefault() with filtering criteria