C# 使用Linq在列表中以逗号分隔的值中查找值
我有一个文件类,每个文件都有行列表。每行代码都有逗号分隔的值。我需要找出逗号分隔的数据中是否存在特定的值C# 使用Linq在列表中以逗号分隔的值中查找值,c#,linq,list,C#,Linq,List,我有一个文件类,每个文件都有行列表。每行代码都有逗号分隔的值。我需要找出逗号分隔的数据中是否存在特定的值 public class File { public List<Row> Rows { get; set; } } public class Row { public string Code{ get; set; } } 公共类文件 { 公共列表行{get;set;} } 公共类行 { 公共字符串代码{get;set;} } 这里的代码有逗号表示的值,如ab
public class File
{
public List<Row> Rows { get; set; }
}
public class Row
{
public string Code{ get; set; }
}
公共类文件
{
公共列表行{get;set;}
}
公共类行
{
公共字符串代码{get;set;}
}
这里的代码有逗号表示的值,如abc、def、ghi | | xyz、ghj、klm
如果只需要布尔值,我需要使用Linq从文件中的行列表中选择包含abc代码的行:
var isPresent = listOfRows.Any(r => r.Code.Split(",").Any(s => (---your condition---)));
如果希望代码属性值与条件匹配的行:
var rows = listOfRows.Where(r => r.Code.Split(",").Any(s => (---your condition---)));
如果只需要代码属性值:
var values = listOfRows.Select(r => r.Code.Split(",")).Where(s => (---your condition---));
尝试:
使用
String.Split
和Enumerable.Any
:
string value = "search_me";
bool hasValue = file.Rows.Any(fr => fr.Code.Split(',').Any(v => v == value));
或包含
:
file.Rows.Any(fr => fr.Code.Split(',').Contains(value));
更新(根据您的编辑):如果要获取包含此代码的第一行:
Row row = file.Rows.FirstOrDefault(fr => fr.Code.Split(',').Contains(value));
if(row != null)
{
// ...
}
或所有行:
IEnumerable<Row> allRows = file.Where(fr => fr.Code.Split(',').Contains(value));
foreach(Row row in allRows)
{
// ...
}
IEnumerable allRows=file.Where(fr=>fr.code.Split(',).Contains(value));
foreach(所有行中的行)
{
// ...
}
对结果数组使用string.Split
然后使用LINQ任意
扩展方法。
IEnumerable<Row> allRows = file.Where(fr => fr.Code.Split(',').Contains(value));
foreach(Row row in allRows)
{
// ...
}