2016-11-16 68 views
0

我有integers ids列表,從表中我只需要爲那些ID在列表中,I have already done that選擇的細節,但我需要一個data sorted same way as they were in the list Explaination below:在LINQ C#從數據庫中選擇數據後如何獲得通過編號的順序排列輸出

現在
List<int> SelectedUser = new List<int> { 26,1,22,27 }; 
List<ValidateDropDownBind> objValidateUserList = (from p in context.tblUser 
                    join q in context.tblTaskReportingAuthority on p.UserID equals q.UserID into gj 
                    from r in gj.DefaultIfEmpty() 
                    where p.IsActive == true && p.CompanyID == CurrentAdminSession.CompanyID && SelectedUser.Contains(p.UserID) 
                    //orderby r.TaskReportingAuthorityID 
                    select new ValidateDropDownBind 
                    { 
                     value = p.UserID, 
                     name = p.FirstName + " " + p.LastName 
                    }).GroupBy(x => x.value, (key, group) => group.FirstOrDefault()).ToList(); 

,因爲我運行此查詢我得到的從數據庫的詳細信息列表中,但它是在sorted form but i need to sort them by the form which they werelist (SelectedUser).

+0

我已經刪除以前使用的順序,但仍然面臨同樣的問題出來是在排序的形式。 –

回答

1

這是不是太漂亮,但你可以使用你的第一個列表,然後從第二選擇列表與FirstOrDefault

最後Where是要確保你不包含空值,如果第一SelectedUser沒有在objValidateUserList列表中找到。

var sortedList = SelectedUser.Select(
     sortedListUser => objValidateUserList.FirstOrDefault(nonSortedListUser => nonSortedListUser.value == sortedListUser)) 
     .Where(x => x != null); 

希望它有幫助!

+0

非常感謝它的工作:) –

相關問題