2013-07-08 76 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; 
    }