【发布时间】:2019-04-15 22:48:27
【问题描述】:
我想知道是否可以创建一个“单行”Linq 来检索特定 Datatable 列的最长字符串值,这意味着所有列数据(数字、日期、字符串...)都应转换为字符串然后返回最长的字符串。
我发现的只是如何从列表中获取最长的字符串,或最大长度值。
这是我迄今为止尝试过的(长度错误):
string maxString = dt
.AsEnumerable()
.Select(row => row[mycolumn].ToString())
.Where(s => s.OrderByDescending(st => st.Length).First());
【问题讨论】:
-
"这是我目前尝试过的(显然不行)" > 不是很明显,请解释一下。
-
@PatrickHofman,抱歉,此代码返回“char 不包含长度定义”
-
无需使用
Where()。这应该可以解决问题:.Select(row => row[mycolumn].ToString()).OrderByDescending(st => st.Length).First(); -
@StephanBauer,这很快。谢谢,我知道它必须是那么简单:)
-
如果您从数据库中加载该数据表,您可能应该考虑编写 SQL 来代替。将整个表加载到内存中并使用 Linq 进行处理可能会慢很多。