Return 来自 Excel 的数据列表
Return a list of data from Excel
我在 Excel 中有一个数据,我已经为 return 数据编写了一个方法,但我不知道如何将它们 return 在列表中。这是我的方法:
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>();
}
这是我的 类 :
public class MyJoin {
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public string ShipCountry { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
public string EmployeeName { get; set; }
}
result2 不能 return LINQ,我不知道如何修复它。
根据您的评论,您可以直接将列映射到 class 的属性(前提是它们具有相同的名称),如下所示:-
List<MyJoin> result = (from b in book.Worksheet<MyJoin>("Orders")
select b).ToList();
他们目前的做法是,如果您没有要映射的 class,则需要 x["OrderID"]
。 x["OrderID"]
returns Linq-to-Excel 行对象,您必须像这样投射它:-
x["OrderID"].Cast<int>
Row[columnName]
returns Cell
对象。而且您不能将单元格对象分配给 integer/string/DateTime 字段。您只需要使用具有适当类型参数的 Cell
的 Cast<T>
方法:
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>()
};
我在 Excel 中有一个数据,我已经为 return 数据编写了一个方法,但我不知道如何将它们 return 在列表中。这是我的方法:
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>();
}
这是我的 类 :
public class MyJoin {
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public string ShipCountry { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
public string EmployeeName { get; set; }
}
result2 不能 return LINQ,我不知道如何修复它。
根据您的评论,您可以直接将列映射到 class 的属性(前提是它们具有相同的名称),如下所示:-
List<MyJoin> result = (from b in book.Worksheet<MyJoin>("Orders")
select b).ToList();
他们目前的做法是,如果您没有要映射的 class,则需要 x["OrderID"]
。 x["OrderID"]
returns Linq-to-Excel 行对象,您必须像这样投射它:-
x["OrderID"].Cast<int>
Row[columnName]
returns Cell
对象。而且您不能将单元格对象分配给 integer/string/DateTime 字段。您只需要使用具有适当类型参数的 Cell
的 Cast<T>
方法:
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>()
};