我有一个名字
的数组string[] arr = { "John", "karl", "Ralf", "Florian" };
而且,我有一个文件行数组
var lines = File.ReadAllLines("test.txt");
而且,在该列的内部,我在该行的特定位置有一些名称,随机名称,例如,第10列到第20列。 我现在怎么做,我有一个encadead循环,我从第一个循环的索引的特定名称逐行搜索
for(int i=0;i<arr.Lenght;i++)
for(int j=0;j<lines.Lenght;j++)
if(lines[j].substring(10,10).trim() == arr[i].Trim())
list.Add(lines[j])
这是一种非常糟糕的方式,我知道:( 但是,我想知道,如果可以使用Linq做到这一点,如果是的话,怎么可能?
答案 0 :(得分:3)
我认为这应该可以胜任
list = lines.Where(x=>arr.Contains(x.Substring(10,10).Trim()));
它将从行子字符串(10,20)在arr
答案 1 :(得分:1)
试试这个:
var result = lines
.Where(line => arr.Contains(line.Substring(10, 10).Trim()))
.ToList();
不需要Trim
元素上的{p> arr
- 它们已被修剪。如果您愿意,可以跳过ToList
以获取惰性IEnumerable<string>
或替换为ToArray
。
答案 2 :(得分:1)
LINQ,在查询理解语法中:
var result = from line in lines
let trimmed = line.Substring(10,10).Trim()
where arr.Contains(trimmed)
select line;
注意:result
将包含非裁剪行的枚举,这是OP代码最初的行。