2013-02-25 68 views
0

這是我原來的查詢我該如何選擇這個dbml查詢的第一行?

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的。我怎樣才能選擇第一個?

+0

@Bill,當您回覆問題文本時,您是否刪除了接受的答案? – Ellesedil 2013-03-27 20:15:03

+1

@Ellesedil不,主持人無法刪除接受複選標記而不刪除答案。 – 2013-03-27 20:58:58

回答

3

查看FirstOrDefault。

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

但是從長遠來看,它可能是更有幫助,以確定的方式來唯一地標識記錄。

0

您可以使用FirstFirstOrDefault獲取列表中的第一項。 FirstOrDefault返回null如果未找到項目,而First將失敗,並顯示「序列不包含任何元素」錯誤。

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