【问题标题】:Convert LINQ codes to .Net 2.0 codes将 LINQ 代码转换为 .Net 2.0 代码
【发布时间】:2016-07-27 09:15:27
【问题描述】:

我应该如何将下面的 LINQ 代码转换为 .Net 2.0 代码?

由于公司政策的一些限制,我无法将其升级到 .Net 3.5。

GetErrorLog 将被ObjectDataSource 使用。

为了使下面的代码能够工作,我使用来自http://weblogs.asp.net/scottgu/dynamic-linq-part-1-using-the-linq-dynamic-query-librarySystem.Linq.Dynamic

    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);
    }

【问题讨论】:

  • 由于公司政策,我无法将其升级到 .Net 3.5。 换一家新公司。
  • 你试过什么? Linq 让生活变得轻松,但它不是魔法 - 排序 - 你有很多例子可以做到这一点。跳过 - 只需从索引 x 开始。采取 - ...只需采取直到索引 y
  • 显示sortExpression的例子,你能用GetErrorLogSortByNameGetErrorLogSortByPath替换一个方法吗?
  • 随着 Microsoft 对原始 .NET Framework 2.0 的生命支持终止,所有受支持的设置现在都应该在 .NET Framework 3.5 SP1 及更高版本上。正如另一条评论所指出的,不要在死板的平台上浪费时间。

标签: c# linq .net-2.0


【解决方案1】:

这是我的做法,欢迎任何更好的答案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2013-11-29
    相关资源
    最近更新 更多