我的代码如下
List<User> UserDetails = AllUser.Where(x => x.UserId == 5).ToList();
此代码将返回所有使用userID=5
的用户并将其存储到我的列表中,如果所有用户都有5条记录UserId=5
,它会将所有5条记录存储到UserDetail
,怎么能我只存储记录的第一行而不是全部5,因为其他4只是来自AllUser
的冗余
答案 0 :(得分:8)
User UserDetails = AllUser.FirstOrDefault(x => x.UserId == 5);
答案 1 :(得分:2)
您可以使用.First()
User UserDetails = AllUser.First(x => x.UserId == 5);
答案 2 :(得分:0)
看起来有点愚蠢有四个答案基本上说明了同样的事情,但它取决于你想要发生的事情,如果没有对象满足你的条件。它应该引发例外吗?它应该继续安静吗?
public bool IsCorrectUser(User u) { return u.UserId == 5; }
// An exception should be raised when there are no matches
var firstHit = AllUser.First(IsCorrectUser);
// When it is okey not to have a match
User firstHit;
if ((firstHit = AllUser.FirstOrDefault(IsCorrectUser) != null)
{
// Use the firstHit variable
}
另外,为了便于阅读,我想将FirstOrDefault置于if
语句中,这样我就知道这个if语句与某个或多个值的存在密切相关。集合。
遗憾的是,C#
声明是一种陈述,而不是表达。