当前位置:  开发笔记 > 编程语言 > 正文

如何使用NULL将DataTable按2列排序,可能使用LINQ?

如何解决《如何使用NULL将DataTable按2列排序,可能使用LINQ?》经验,为你挑选了1个好方法。

我有一个ADO.Net数据表,我需要首先按column1然后按column2排序,其中任何一个都可能有空值.排序后,我需要从行中读取一些值并添加到列表视图中.

我编写了代码来执行此DataTable.DefaultView.Sort(运行两次).但想知道是否有更好的方法.

我在想LINQ ......所以我试过了:

OrderedEnumerableRowCollection queryX = dt.AsEnumerable()
            .OrderBy(c => c.Field("column1"))
            .ThenBy(c => c.Field("column2"));

但这个错误随之而来"System.InvalidCastException was unhandled".我假设这是由NULL引起的,所以就像我在数据表上指定查询的测试一样"where column1 IS NOT NULL",错误仍然发生.

我的LINQ经验并不多,所以我的问题是:

上面的代码有什么不对?从概念上讲,我错过了LINQ的工作原理吗?

为什么过滤掉Null仍会导致这种情况?再说一次,从概念上讲,我错过了LINQ的工作原理

有没有更好的\正确的LINQ查询,这将是什么?

是否有更好的\更正确(更优雅)的方式(使用LINQ或不使用LINQ)?

TEP



1> Kobi..:

如果您有DataTable,请查看DataView:

private void SortByTwoColumns()
{
    // Get the DefaultViewManager of a DataTable.
    DataView view = DataTable1.DefaultView;

    // By default, the first column sorted ascending.
    view.Sort = "State, ZipCode DESC";
}

来源:http: //msdn.microsoft.com/en-us/library/system.data.dataview.sort.aspx

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有