我有一个文件类,每个文件都有行列表。每行都有Code,其中包含逗号分隔值。我需要查找逗号分隔数据中是否存在特定值。
public class File
{
public List<Row> Rows { get; set; }
}
public class Row
{
public string Code{ get; set; }
}
这里的代码有逗号分类值,如abc,def,ghi || xyz,ghj,klm
我需要选择具有abc作为代码的行,该代码使用Linq在文件中的行列表中
答案 0 :(得分:3)
如果你只想要一个布尔值:
var isPresent = listOfRows.Any(r => r.Code.Split(",").Any(s => (---your condition---)));
如果您希望Code属性值与您的条件匹配的行:
var rows = listOfRows.Where(r => r.Code.Split(",").Any(s => (---your condition---)));
如果您只想要Code属性值:
var values = listOfRows.Select(r => r.Code.Split(",")).Where(s => (---your condition---));
答案 1 :(得分:1)
尝试:
foreach (var line in filelines) {
var exists = line.Split(',').Any(s => s == mySearchValue);
}
答案 2 :(得分:1)
使用String.Split
和Enumerable.Any
:
string value = "search_me";
bool hasValue = file.Rows.Any(fr => fr.Code.Split(',').Any(v => v == value));
或Contains
:
file.Rows.Any(fr => fr.Code.Split(',').Contains(value));
更新(根据您的编辑内容):如果您想获得包含此代码的第一个Row
:
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)
{
// ...
}