检查LINQ to datatable中的空值

时间:2013-01-28 19:05:00

标签: c# linq

我的Linq查询是这样的:

IEnumerable<Results> subResult = from query in datatable.AsEnumerable()
                              select new Results
                                  {
                                      Name = query.Field<string>("Name"),
                                      Date = query.Field<DateTime?>("Date")
                                  }

在这一个中,有一些空值进入“名称”字段,如果有null,如何将其设置为零。 怎么做?

3 个答案:

答案 0 :(得分:4)

使用??操作

IEnumerable<Results> subResult = from query in datatable.AsEnumerable()
                              select new Results
                              {
                                  Name = query.Field<string>("Name")?? string.Empty,
                                  Date = query.Field<DateTime?>("Date")
                              }

答案 1 :(得分:2)

您是否尝试过合并运营商? http://msdn.microsoft.com/en-us/library/ms173224.aspx

类似的东西:

Name = query.Field<string>("Name") ?? "0"

答案 2 :(得分:0)

以下代码为我工作。你可以试试这个。

 class Program
{
    static void Main(string[] args)
    {
        DataTable datatable = new DataTable();
        datatable.Columns.AddRange(new DataColumn[]
            {
               new DataColumn("Name",typeof(System.String)),
               new DataColumn("Date",typeof(System.DateTime))
            });

        datatable.Rows.Add(new object[] { "Sam", DateTime.Now });
        datatable.Rows.Add(new object[] { null, DateTime.Now });

        IEnumerable<Results> subResult = from query in datatable.AsEnumerable()
                                         select new Results
                                             {
                                                 Name = query.Field<string>("Name") ?? "0" ,
                                                 Date = query.Field<DateTime?>("Date")
                                             };
    }
}

class Results
{

    public string Name { get; set; }

    public DateTime? Date { get; set; }
}