C# 用逗号分隔的字符串搜索列表

C# 用逗号分隔的字符串搜索列表,c#,asp.net,asp.net-mvc,linq,lambda,C#,Asp.net,Asp.net Mvc,Linq,Lambda,然后是“InitialApplicationModel”类型的申请人列表。FacultyList是InitialApplicationModel的一个属性 I have a comma separated string FacultyList="1,2,3,4...1004,1005..." 我想得到一个申请者列表,其中他们的FacultyList包含值4 例如:Appliantid 1的FacultyList=1,2,30,4,…100/Appliantid 2有 FacultyList=2

然后是“InitialApplicationModel”类型的申请人列表。FacultyList是InitialApplicationModel的一个属性

I have a comma separated string FacultyList="1,2,3,4...1004,1005..."
我想得到一个申请者列表,其中他们的FacultyList包含值4

例如:Appliantid 1的FacultyList=1,2,30,4,…100/Appliantid 2有 FacultyList=200301,…/申请人3拥有 FacultyList=101,2,31,4,…110

因此,最终列表应返回申请人1和3

我尝试了下面的代码,但似乎没有返回正确的结果

public class InitialApplicantModel
{
  public int applicantID {get;set}
  public string FacultyList {get; set;}
}
您只需要使用方法根据需要过滤数据。这些方法接受匿名方法作为输入。这些方法必须返回布尔值。在该方法中,必须将值按
,“
拆分,然后搜索返回的数组是否包含
4

foreach (InitialApplicantModel item in applicants)
{
    if (item.FacultyList != null)
    {
        string[] array = item.FacultyList.Split(',');
        array = array.Where(x => !string.IsNullOrEmpty(x)).ToArray();
        applicants = applicants.AsEnumerable().Where(o => array.Any(b =>(b)== "4")).ToList();
    }
}
更新1: 如果字符串为null,
.Split()
将抛出
NullReferenceException

var result = applicants
             .Where(x => x.FacultyList.Split(',').Contains("4"))
             .ToList();
更新2:


您不需要使用
foreach
循环:

var result = applicants
             .Where(x => !String.IsNullOrEmpty(x.FacultyList) ?     
                          x.FacultyList.Split(',').Equals("4") : false)
             .ToList();

你的代码没有任何意义,你甚至从未在where调用中检查过应用程序(
o
)。你能选择一个你想保留的答案,然后删除另一个吗?@FarhadJabiyev首先我需要检查FacultyList是否为null。有没有办法不用foreach循环来检查它?@chamara很乐意帮忙。@FarhadJabiyev如果数组项有44104之类的项怎么办。。contains也会将它们作为有效项,对吗?但我需要该物品与你所说的问题中的“4”@chamara完全匹配,其中包含4。所以,我是这样回答的。但是,如果您想检查字符串是否等于4,那么请查看我的新更新。有没有不使用foreach循环检查它的方法?
var result = applicants
             .Where(x => !String.IsNullOrEmpty(x.FacultyList) ?     
                          x.FacultyList.Split(',').Equals("4") : false)
             .ToList();
applicants = applicants
            .AsEnumerable()
            .Where(o => o.FacultyList.Split(',').Contains("4")).ToList();