我怎样才能选择这个dbml查询的第一行?

时间:2013-02-25 21:49:24

标签: sql linq-to-sql

这是我的原始查询

public UserChallenge GetUserChallenge(int userId, int challengeId)
    {
                   var result = from userChallenge in DataContext.UserChallenges
                   where userChallenge.UserId == userId && userChallenge.ChallengeId == challengeId
                   select userChallenge;

这是修改后的查询

                       var result = from userChallenge in DataContext.UserChallenges
                       where userChallenge.ChallengeId == challengeId
                       select userChallenge;

有超过1个userChallenge持有ChallengeId。我怎样才能只选择第一个?

2 个答案:

答案 0 :(得分:3)

查看FirstOrDefault。

var result = (from userChallenge in DataContext.UserChallenges
               where userChallenge.UserId == userId && userChallenge.ChallengeId == challengeId
               select userChallenge).FirstOrDefault();

但从长远来看,确定一种唯一识别记录的方法可能会更有帮助。

答案 1 :(得分:0)

您可以使用FirstFirstOrDefault来获取列表中的第一项。如果找不到任何项,则FirstOrDefault会返回null,而First会因“Sequence contains no elements”错误而失败。

var result = (from userChallenge in DataContext.UserChallenges
  where userChallenge.ChallengeId == challengeId
  select userChallenge).FirstOrDefault();