2013-07-08 77 views
1

我想創建一個通用的擴展方法,它將接收IQueryable,並且 將以線程安全的方式在一個單獨的線程/任務上執行一個操作(如獲取前十個元素)。線程安全的IQueryable擴展方法

有人可以給我的正確方法的代碼示例做

感謝

回答

0

像這樣的事情

public static List<T> GetTopN<T>(IQueryable<T> inData, int n) 
    { 
     List<T> outData = new List<T>(n); 

     lock (inData) 
     { 
      int i = 0; 
      foreach (T t in inData) 
      { 
       if (i >= n) 
       { 
        return outData; 
       } 

       i++; 

       outData.Add(t); 
      } 
     } 

     return outData; 
    }