C# 用逗号分隔的字符串搜索列表
然后是“InitialApplicationModel”类型的申请人列表。FacultyList是InitialApplicationModel的一个属性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
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();