LinqToExcel : Distinct values in excel column

标签 linq c#-4.0 interop excel-interop linq-to-excel

对于各位专家来说,这可能是一件非常简单的事情,但我对 C#4 和 INTEROP 并不熟悉。因此,我很困惑。这是我的问题。 我有一个包含重复数据的 Excel 列,我想将其修剪为仅具有唯一值。数据如下所示:

ColA    ColB
10      Adam
12      Jane
14      Adam
18      Adam
20      Eve

所以,最后我只想要 ColB 的唯一名称:

Adam
Jane
Eve

我知道我可以通过将所有这些值放入列表中然后向其中添加 Distinct 功能来做到这一点。但我想我做错了什么。无论如何,这是我的程序:

Application XLApp = new Microsoft.Office.Interop.Excel.Application();
var XLBook = XLApp.Workbooks.Open(@"c:\temp\Test.xls", ReadOnly: false);
// Grab the 1st sheet
var XLSheet = (Microsoft.Office.Interop.Excel.Worksheet)XLBook.Worksheets.get_Item(1);

XLApp.Visible = true;
// I think I need help with the following lines
IEnumerable<string> myCol = XLApp.Range["B2", XLApp.Range["B2"].End[XlDirection.xlDown]].Select();
myCol.ToList().Distinct();

XLBook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
((_Application)XLApp).Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(XLApp);

如何针对 Excel 使用 C#4 来执行此操作?

提前致谢。

最佳答案

您可以使用LinqToExcel轻松获取列中的不同值

var excel = new ExcelQueryFactory("worksheetFileName");
var distinctNames = (from row in excel.WorkSheet()
                     select row["ColB"]).Distinct()

编辑:

要在 LinqToExcel 中使用 Distinct,您必须使用与行数据对应的类。

public class WorksheetRow
{
    public string ColA { get; set; }
    public string ColB { get; set; }
}

var excel = new ExcelQueryFactory("worksheetFileName");
var distinctNames = (from row in excel.WorkSheet<WorksheetRow>()
                     select row.ColB).Distinct()

关于LinqToExcel : Distinct values in excel column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10420911/

相关文章:

c# - 比较具有不同 'times' 的 DateTime 字段

c# - 我应该如何对异常类的序列化进行单元测试?

.net - 如何在 C# 中声明联合?

c# - 在 Linq 中按条件分组

c# - 获取 ComboBox 中所选项目的 ID

asp.net-mvc-3 - 如何读取 ASP.Net MVC 3 Web API 2.1 Controller 中的 POST 数据?

c - 将 C 库与 Java、Ruby、Node、Python、Go、.NET 集成

c# - 如何从其 Win32 句柄中获取 System.Windows.Form 实例?

linq - LINQ2SQL 中的 EntitySet 与表查询性能

.net - 由 C# sockets CONNECTIONS