Linq具有DbNull值

时间:2009-09-04 12:55:40

标签: linq

我有一个DataTable,其中包含包含DbNull值的列。我想使用Linq并输出一个新的DataTable,但我想要保持DbNull值。这是一个例子:

        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("C1",System.Type.GetType("System.String")));
        dt.Columns.Add(new DataColumn("C2",System.Type.GetType("System.String")));
        DataRow row;
        row = dt.NewRow();
        row["C1"] = "Hello";
        row["C2"] = "World";
        dt.Rows.Add(row);
        row = dt.NewRow();
        row["C1"] = DBNull.Value;
        row["C2"] = "World";
        dt.Rows.Add(row);

        var cars1 = from car in dt.AsEnumerable()
                    where car.Field<String>("C2") == "World"
                    select car;
        DataTable cars2 = cars1.CopyToDataTable();

第二行的C1列如何在cars2 DataTable中保存DbNull值?

1 个答案:

答案 0 :(得分:1)

托马斯是正确的 - CopyToDataTable()DBNull字段值没有任何特殊之处。但是,Field<T>上的DataRow扩展方法确实会为null返回DBNull - 您是否使用它来测试cars2