【问题标题】:Linq Result Join all Rows Data to stringLinq 结果将所有行数据连接到字符串
【发布时间】:2013-08-16 06:47:28
【问题描述】:

我从database 获取类似200k 记录的数据,并将其存储在linq 结果中,结果为ColumnName EMAIL。现在,我想显示来自linqresult 的所有电子邮件,并通过, 分隔将它们添加到TextBox

实际上,我已经用linq 的结果准备了DataTable,并将所有行数据与代码结合起来:

var dataLists = (from xx in VDC.SURVEY_EMAIL_LIST
                  where xx.EMAIL_GROUP_ID == ListGroupID
                  select xx).ToList();

DataTable DtDataLists = LINQToDataTable(dataLists);

EmailIDS = string.Join(",", DtDataLists.AsEnumerable().Select(x => x["EMAILID"].ToString()).ToArray());

但是,准备DataTable,需要很长时间。 所以,我想直接从linq 结果准备string EmailIDS。 谁能帮帮我?

【问题讨论】:

  • 你可以使用string.Join("," , dataLists.Select(x=> x.EmailId).ToArray())

标签: c# asp.net .net string linq


【解决方案1】:

这段代码应该适合你,但我不确定它会更快:

string.Join(",", dataLists.Select(x => x.EMAILID));

【讨论】:

  • 不允许空值怎么样:我得到空引用异常,而我的 linq 结果中有空值。所以,我想要这样的东西:var text=string.Join("," , table.AsEnumerable().Select(T => ((T.ColumnName== null) ? "" : T.ColumnName).ToString()));
  • @RealSteel 只需将过滤语句 (Where) 添加到您的表达式中。 string.Join(",", dataLists.Where(x => x.EMAIL != null).Select(x => x.EMAILID));
  • 关于性能我做了一点测试,string.JOIN 结合 LINQ 是高性能的:dailycode.info/Blog/post/2014/05/07/…我不明白你为什么要使用数据表?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
相关资源
最近更新 更多