2009-10-13 66 views
1

林使用LINQ ...更具體地,排序PLINQO。反正以下是我綁定到一個DataGridView查詢(的WinForms)爲例:的WinForms DataGridView中使用LINQ

public static List<Task> GetUserTasks(Guid userID) { 
     using (myDataContext ctx = new myDataContext()) { 
      try { 
       return ctx.Manager.Task.GetByUserID(userID).ToList(); 
      } catch (Exception) { 
       throw; 
      } 
     } 
    } 

在我的UI,我有以下的設置綁定:

 BindingSource bs = new BindingSource(); 
     bs.DataSource = DUtasks.GetUserTasks(User.Current.UserID); 
     dgvTasks.DataSource = bs; 

它的工作原理,但沒有排序是可能的。我試過「AsEnumerable()」而不是「ToList()」,但由於某種原因,拋出了「異議引用」錯誤。關於如何在這方面繼續前進的任何想法?

非常感謝!

回答

1

好的,問題排序!!! :)

發現以下鏈接:SortableBindingList...(我的意見是,在與轉換後的C#代碼工作的底部)。

現在返回列表<(實體)我所有的查詢方法>只是習慣於這樣的:

 SortableBindingList<Task> sortedTasks = new SortableBindingList<Task>(DUtasks.GetUserTasks(User.Current.UserID)); 
     dgvTasks.DataSource = sortedTasks; 
     dgvTasks.Sort(colTaskDue, ListSortDirection.Ascending); 

希望這可以幫助別人!

0

你試過返回一個IOrderedEnumerable?不知道它是否會有所幫助,但是它旨在處理有序的LINQ結果。

+0

HI劫匪。不幸的是,這不起作用。我已經嘗試了一個「orderby」追加到查詢沒有結果。我在每列設置爲自動排序屬性(哦,順便說一句,我喜歡選擇不自動生成列,如果這使差異。),所以我知道,只要我有它的權利SortGlyph應該出現,對? – Shalan 2009-10-13 16:57:51

0

只能在本頁面MySortableBindingList類實現 - 一個可排序,BindingList-

然後

VAR yourLinqList = ...;

MySortableBindingList sortlist中=新MySortableBindingList(yourLinqList);

dataGridView1.DataSource = sortlist中;

那麼你的dataGridView必須是那種當信元頭點擊。