我正在使用C#中的excel项目,我尝试恢复值相同的行:
所以我得到第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();
但我不知道在“哪里”放什么。有人有想法吗? 感谢
答案 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的组(值出现多次),然后我们压缩组的列表回到单元格列表。