C# 从Excel返回数据列表
我在Excel中有一个数据,我编写了一个返回数据的方法,但我不知道如何在列表中返回它们。以下是我的方法:C# 从Excel返回数据列表,c#,excel,linq,linq-to-excel,C#,Excel,Linq,Linq To Excel,我在Excel中有一个数据,我编写了一个返回数据的方法,但我不知道如何在列表中返回它们。以下是我的方法: public List<MyJoin> Excel(string sort, string sortDir, int rowsPerPage, int page, out int count, out string sortCriteria) { count = 0; sortCriteria = ""; var book =
public List<MyJoin> Excel(string sort, string sortDir, int rowsPerPage, int page, out int count, out string sortCriteria) {
count = 0;
sortCriteria = "";
var book = new ExcelQueryFactory("/App_Data/Northwind.xsl");
var result = from x in book.Worksheet("Orders")
select new
{
OrderID = x["OrderID"],
OrderDate = x["OrderDate"],
ShipCountry = x["ShipCountry"],
CompanyName = x["CustomerID"],
ContactName = x["CustomerID"],
EmployeeName = x["EmployeeID"],
};
var result2 = result.ToList() ;
return result2;
//return new List<MyJoin>();
}
result2无法返回LINQ,我不知道如何修复它。根据您的评论,您可以直接将列映射到类的属性(前提是它们都具有相同的名称),如下所示:-
List<MyJoin> result = (from b in book.Worksheet<MyJoin>("Orders")
select b).ToList();
x["OrderID"].Cast<int>
行[columnName]
返回单元格
对象。并且不能将单元格对象分配给整数/字符串/日期时间字段。您只需使用带有适当类型参数的Cell
的Cast
方法:
var result = from r in book.Worksheet("Orders")
select new MyJoin
{
OrderID = r["OrderID"].Cast<int>(),
OrderDate = r["OrderDate"].Cast<DateTime>(),
ShipCountry = r["ShipCountry"].Cast<string>(),
CompanyName = r["CustomerID"].Cast<string>(),
ContactName = r["CustomerID"].Cast<string>(),
EmployeeName = r["EmployeeID"].Cast<string>()
};
var result=来自book.Worksheet(“订单”)中的r
选择新建MyJoin
{
OrderID=r[“OrderID”].Cast(),
OrderDate=r[“OrderDate”].Cast(),
ShipCountry=r[“ShipCountry”].Cast(),
CompanyName=r[“CustomerID”].Cast(),
ContactName=r[“CustomerID”].Cast(),
EmployeeName=r[“EmployeeID”].Cast()
};
这是打字错误吗?您应该使用select new MyJoin
而不是select new
。是的,很抱歉是新join我有相同的…这是一个打字错误,它不接受OrderID=x[“OrderID”],OrderDate=x[“OrderDate”],因为它无法将类型Linqtoexcel转换为int@BesaNeziri-请检查我的编辑,您可以直接将excel列映射到您的类。只使用第一个查询。
var result = from r in book.Worksheet("Orders")
select new MyJoin
{
OrderID = r["OrderID"].Cast<int>(),
OrderDate = r["OrderDate"].Cast<DateTime>(),
ShipCountry = r["ShipCountry"].Cast<string>(),
CompanyName = r["CustomerID"].Cast<string>(),
ContactName = r["CustomerID"].Cast<string>(),
EmployeeName = r["EmployeeID"].Cast<string>()
};