5

我的代码如下

List<User> UserDetails = AllUser.Where(x => x.UserId == 5).ToList(); 

此代码将返回所有用户userID=5并将其存储到我的列表中,如果所有用户有 5 条记录UserId=5,它会将所有 5 条记录存储到UserDetail,我如何只存储记录的第一行而不是全部 5,因为其他 4只是冗余AllUser

4

3 回答 3

9
User UserDetails = AllUser.FirstOrDefault(x => x.UserId == 5); 
于 2013-10-30T08:27:25.703 回答
2

您可以使用.First()

User UserDetails = AllUser.First(x => x.UserId == 5);
于 2013-10-30T08:28:50.177 回答
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#声明是一个声明,而不是一个表达式。

于 2013-10-30T09:16:23.737 回答