我的代码如下
List<User> UserDetails = AllUser.Where(x => x.UserId == 5).ToList();
此代码将返回所有用户userID=5
并将其存储到我的列表中,如果所有用户有 5 条记录UserId=5
,它会将所有 5 条记录存储到UserDetail
,我如何只存储记录的第一行而不是全部 5,因为其他 4只是冗余AllUser
User UserDetails = AllUser.FirstOrDefault(x => x.UserId == 5);
您可以使用.First()
User UserDetails = AllUser.First(x => x.UserId == 5);
四个答案基本相同,这似乎有点愚蠢,但这取决于如果没有满足您条件的对象,您想要发生什么。它应该引发异常吗?是不是应该悄悄地继续下去?
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#
声明是一个声明,而不是一个表达式。