过滤列表中逗号分隔的字符串

时间:2014-06-04 09:54:30

标签: c# linq

我有一个List,其中包含一个逗号分隔的字符串值,用于保存标记。

我想根据此逗号分隔字符串中的值过滤List。

List中逗号分隔的字符串通常如下所示:

list.Tags = "Tag 1, Tag2, Another Tag"

我已尝试过以下操作,但接收的对象引用未设置为实例错误。 NextDate只是一个返回列表中相应项的子句,现在需要找到匹配的“标签”。我只会搜索1个标签。

list = list.Where(x => x.NextDate >= todaysDate).Where(x => x.Tags.Contains("Tag 1")).ToList();

如何过滤我的列表中的某个标记?

[重复的问题没有回答我的问题,我正在尝试使用正确的语法来过滤我的列表,这个问题没有用。我的问题与Linq语法有关]

1 个答案:

答案 0 :(得分:1)

添加空检查:

list = 
  list.Where(
    x => null != x.NextDate && 
    x.NextDate >= todaysDate && 
    null != x.Tags && 
    x.Tags.Contains("Tag 1"))
  .ToList();

如果您想确保匹配确切的标签(即您有标签1和标签11):

list = 
  list.Where(
    x => null != x.NextDate && 
    x.NextDate >= todaysDate && 
    null != x.Tags && 
    x.Tags.Split.Contains("Tag 1"))
  .ToList();