2016-07-27 14 views
0

Wie soll ich die folgenden LINQ-Codes in .Net 2.0-Codes konvertieren?LINQ-Codes in .Net 2.0-Codes konvertieren

Ich kann es nicht auf .Net 3.5 aufgrund Unternehmenspolitik einige Einschränkungen aktualisieren.

GetErrorLog wird von ObjectDataSource verwendet werden.

Um den Code unten, verwende ich von System.Linq.Dynamic zu arbeiten 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

* Ich kann es aufgrund der Unternehmensrichtlinien nicht auf .Net 3.5 aktualisieren. * Beziehen Sie eine neue Firma. –

+1

Was hast du probiert? Linq macht das Leben leicht, aber es ist keine Magie - Sortieren - Sie haben viele Beispiele dafür. Überspringen - nehmen Sie einfach von Index x nach. Take - ... Nehmen Sie einfach bis zum Index y –

+0

Zeigen Sie ein Beispiel für 'sortExpression', können Sie die eine Methode durch' GetErrorLogSortByName' und 'GetErrorLogSortByPath' ersetzen? –

Antwort

0

Hier ist, wie ich es tun, sind besser Antworten willkommen.

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; 
} 
Verwandte Themen