2016-07-27 6 views
0

LINQコードを.Net 2.0コードに変換する方法を教えてください。LINQコードを.Net 2.0コードに変換する

企業ポリシーいくつかの制約のため、.Net 3.5にアップグレードすることはできません。

GetErrorLogは、ObjectDataSourceで使用されます。私はここでSystem.Linq.Dynamic

http://weblogs.asp.net/scottgu/dynamic-linq-part-1-using-the-linq-dynamic-query-libraryから
public class errorLog 
    { 
     public string fileName { get; set; } 
     public string filePath { get; set; } 
    } 

    public static IQueryable<errorLog> GetErrorLog(int startRowIndex, int maximumRows, string sortExpression, string logPath) 
    { 
     if (string.IsNullOrEmpty(sortExpression)) 
     { 
      sortExpression = "fileName"; 
     } 
     string[] filePaths = Directory.GetFiles(logPath); 
     List<errorLog> files = new List<errorLog>(); 

     foreach (string filePath in filePaths) 
     { 
      files.Add(new errorLog { fileName = Path.GetFileName(filePath), filePath = filePath }); 
     } 

     return files.AsQueryable().OrderBy(sortExpression).Skip(startRowIndex).Take(maximumRows); 
    } 
+7

*会社ポリシーのため、.Net 3.5にアップグレードすることはできません。 –

+1

何を試しましたか? Linqは人生を楽にしますが、それは魔法ではありません - 並べ替え - あなたはそれを行う多くの例があります。スキップ - インデックスx以降を取得します。 Take - ...インデックスyまで取るだけです。 –

+0

'sortExpression'の例を示します。一つのメソッドを' GetErrorLogSortByName'と 'GetErrorLogSortByPath'で置き換えることができますか? –

答えて

0

使う仕事に以下のコードためには

が、私はそれを行う方法で、任意のより良い答えは歓迎されています。

public static DataTable GetErrorLog(int startRowIndex, int maximumRows, string sortExpression, string logPath) 
{ 
    if (string.IsNullOrEmpty(sortExpression)) 
    { 
     sortExpression = "fileName DESC"; 
    } 

    DataTable errorLog = GetErrorLogDataTable(); 

    string[] filePaths = Directory.GetFiles(logPath); 
    foreach (string filePath in filePaths) 
    { 
     DataRow row = errorLog.NewRow(); 
     row["fileName"] = Path.GetFileName(filePath); 
     row["filePath"] = filePath; 
     errorLog.Rows.Add(row); 
    } 

    DataView dataView = new DataView(errorLog); 
    dataView.Sort = sortExpression; 
    errorLog = dataView.ToTable(); 
    DataTable pagedErrorLog = errorLog.Clone(); 

    for (int i = startRowIndex; i < startRowIndex + maximumRows; i++) 
    { 
     if (i >= errorLog.Rows.Count) 
     { 
      break; 
     } 
     pagedErrorLog.ImportRow(errorLog.Rows[i]); 
    } 

    if (pagedErrorLog.Rows.Count <= 0) 
    { 
     return errorLog; 
    } 
    else 
    { 
     return pagedErrorLog; 
    } 
} 

private static DataTable GetErrorLogDataTable() 
{ 
    DataTable dataTable = new DataTable(); 
    dataTable.Columns.Add("fileName"); 
    dataTable.Columns.Add("filePath"); 
    return dataTable; 
} 
関連する問題