我的DataTable
目前看起来像这样(名字= dtRecipient
):
使用以下 LINQ 语句,我正在尝试查找 RecipientId 值等于例如 RecipientId 的记录。 “马库斯”:
var found = dtRecipients.AsEnumerable().Where(row => String.Equals(row.Field<string>("RecipientId"), "marcus"));
但是没有返回结果,而如图所示,有“marcus”的记录。是什么给了什么?
答案 0 :(得分:1)
没有空格或其他不可见的字符?
您可以使用Trim
删除前导和尾随空格(或换行符/制表符):
var found = dtRecipients.AsEnumerable()
.Where(row => String.Equals((row.Field<string>("RecipientId") ?? "").Trim(), "marcus"));
如果您要删除所有不可打印的字符,可以使用Char.IsControl
来检测它们:
var found = dtRecipients.AsEnumerable()
.Where(row => String.Equals(
new String(
(row.Field<string>("RecipientId") ?? "").Trim()
.Where(c => !char.IsControl(c))
.ToArray()),
"marcus", StringComparison.OrdinalIgnoreCase));
我还使用StringComparison.OrdinalIgnoreCase
来说明如何忽略这种情况。