获取excel.range中的行,其中Value是相同的

时间:2017-11-20 13:34:36

标签: c# excel linq

我正在使用C#中的excel项目,我尝试恢复值相同的行:

  • A
  • A

所以我得到第1行和第2行 我已经尝试过了:

Excel.Range xl = (Excel.Range)worksheet.get_Range("Q2:Q" + lastRowOfTheSheet);
 var all = xl.Rows.Cast<Excel.Range>().Select(x => x.Value2.ToString()).ToList();
 var theRowsSameValue = xl.Rows.Cast<Excel.Range>().Where(y => y.Value2 != ?????????).Select(x => x.Row).ToList();

但我不知道在“哪里”放什么。有人有想法吗? 感谢

1 个答案:

答案 0 :(得分:1)

这个问题的答案是对行进行分组,然后检查每个组的计数,然后取消组合&#39;使用.SelectMany方法再次使用行。见下文:

Excel.Range xl = (Excel.Range)worksheet.get_Range("Q2:Q" + lastRowOfTheSheet);
 var theRowsSameValue = xl.Rows.Cast<Excel.Range>().GroupBy(y => y.Value2).Where(y => y.Count()>1).SelectMany(x => x).ToList();

从左到右读取方法调用,我们分组按值,然后我们过滤用于记录数超过1的组(值出现多次),然后我们压缩组的列表回到单元格列表。