2014-02-18 327 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) 
{ 
    // ... 
}