我正在尝试从excel表(csv)获取特定数据。
var rows = excelsheet
.Where(x => x.Text == domain.Name
&& x.Text.Contains(domaintype.ToString()))
.Select(x => x.Start.Row)
.ToList();
我希望它过滤域名,该行中的任何单元格都可以在其中包含单词x.Text.Contains(domaintype.ToString()
。
但是当我运行代码时它会变空。只做where子句中的任何一个都可以正常工作。但我同时需要这两个条款才能奏效。我需要代码的行号才能工作。
以下是一个例子:
"1 ; Respect ; Hielden uw zorgverleners rekening met uw privacy? ; Vraag antenataal 11"
domain.Name
是“尊重”,domaintype
在这种情况下是“产前”。所以我想要每个包含这两个过滤器的行号。
我知道domain.Name
中有“尊重”,domaintype
中有“产前”(通过调试)。
答案 0 :(得分:1)
而不是
var rows = excelsheet
.Where(x => x.Text == domain.Name
&& x.Text.Contains(domaintype.ToString()))
.Select(x => x.Start.Row)
.ToList();
尝试
var rows = excelsheet
.Where(x => x.Text.Contains(domain.Name)
&& x.Text.Contains(domaintype.ToString()))
.Select(x => x.Start.Row)
.ToList();
基本上,你的第一个条件是要求" 1;尊重; Hielden uw zorgverleners rekening遇见了你的隐私? ; Vraag antenataal 11"应该等于"尊重"而不是包含它,这就是没有返回价值的原因。
关于解析CSV文件,SO上已经有一个推荐几个解析器的主题,您可以查看它并选择最适合您的解析器。我在一个小项目中使用了TextFieldParser,它很简单(但不要忘记将它包装在"使用"块)。