2014-02-18 100 views
1

我有一个文件类,每个文件都有行列表。每行都有代码,用逗号分隔值。我需要找出逗号分隔数据中是否存在特定值。使用Linq在列表中查找逗号分隔值的值

public class File 
{ 
    public List<Row> Rows { get; set; } 
} 

public class Row 
{ 
    public string Code{ get; set; } 
} 

这里代码逗号等ABC sperated值,DEF,GHI || XYZ,GHJ,荷航

我需要选择具有ABC一样的代码了行列表的第i行有使用LINQ

+0

使用'string.Split'那么LINQ'对Any'扩展方法产生阵列。 – ken2k

+1

它也可能有助于显示课程。 “Row”是您创建的单独的类,还是“DataRow”? –

回答

3

文件中。如果你只是想要一个布尔值:

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---)); 
1

尝试:

foreach (var line in filelines) { 
    var exists = line.Split(',').Any(s => s == mySearchValue); 
} 
1

使用String.SplitEnumerable.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)); 

更新(ACC。您的编辑):如果你想获得其中包含此代码的第一:

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) 
{ 
    // ... 
}