【问题标题】:Selecting Multiple Rows from DataTable using Linq使用 Linq 从 DataTable 中选择多行
【发布时间】:2016-04-12 08:20:59
【问题描述】:

我有一个 DataTable 包含这些列:

AlertEmail , ClosingDate , OpeningDate , LocationTitle , JobTitle

我想搜索此DataTable 并查找每个 AlertEmail 的记录。我这样做了,但 MailInfo 返回了NULL。

DataTable dt = amail.GetAllJobAlertForSend();

var AllEmail = dt.AsEnumerable()
                 .Select(row => new {attribute1_name = row.Field<string>("AlertEmail") }).Distinct();

foreach (var mail in AllEmail)
{
    var MailInfo = from p in dt.AsEnumerable()
                   where p.Field<string>("AlertEmail").Trim() == mail.ToString()
                   select new
                   {
                       ClosingDate = p.Field<DateTime>("ClosingDate"),
                       OpeningDate = p.Field<DateTime>("OpeningDate"),
                       LocationTitle = p.Field<string>("LocationTitle"),
                       JobTitle = p.Field<string>("JobTitle")
                   };

    foreach (var info in MailInfo)
    {
        Response.Write(string.Format("{0}", info.ClosingDate));
    }
}

我的代码出了什么问题?

【问题讨论】:

  • 我认为你需要使用 mail.attribute1_name 而不是 mail.ToString()
  • @Viru,非常感谢。我的问题解决了
  • 很高兴我能帮上忙 :)...发布为答案

标签: c# linq datatable linq-to-dataset


【解决方案1】:

由于邮件是匿名类的对象...访问其属性将解决您的问题,而不是 ToString

 var MailInfo = from p in dt.AsEnumerable()
                   where p.Field<string>("AlertEmail").Trim() == mail.attribute1_name
                   select new
                   {
                       ClosingDate = p.Field<DateTime>("ClosingDate"),
                       OpeningDate = p.Field<DateTime>("OpeningDate"),
                       LocationTitle = p.Field<string>("LocationTitle"),
                       JobTitle = p.Field<string>("JobTitle")
                   };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多