当值存在时,在DataTable列中搜索值将返回空

时间:2015-08-19 11:28:52

标签: c# linq datatable

我的DataTable目前看起来像这样(名字= dtRecipient):

enter image description here

使用以下 LINQ 语句,我正在尝试查找 RecipientId 值等于例如 RecipientId 的记录。 “马库斯”:

var found = dtRecipients.AsEnumerable().Where(row => String.Equals(row.Field<string>("RecipientId"), "marcus"));

但是没有返回结果,而如图所示,有“marcus”的记录。是什么给了什么?

1 个答案:

答案 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来说明如何忽略这种情况。