在 DataTable 列 returns 中搜索一个值,当该值存在时为空

Searching for a value in a DataTable column returns empty when the value exists

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

使用以下 LINQ 语句,我试图找到 RecipientId 值等于例如"marcus":

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

但是没有返回任何结果,而正如您在图片中看到的,有 "marcus" 的记录。给出了什么?

没有空格或其他不可见字符?

您可以使用 Trim:

删除前导和尾随空格(或 new-line/tab-characters)
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 来展示如何忽略大小写。