如何使用LINQ
select
来自所有行的所有Company Name
和Company ID
?我需要像这样的伪代码:
var typedQry = from b in allData.AsEnumerable()
where b.GetHeader("xxx") == "08/10/09 to 08/26/09"
select CompanyName, CompanyID, ...
以下代码仅选择一个公司名称。相反,我想要所有行中的公司名称:
var typedQry3 = from b in allData.AsEnumerable()
select new { compname0 = b._rows[0][5]};
_rows
中的数据为Company Name
(e.g., allData[0]._rows[0][5], allData[0]._rows[1][5],....)
,Company ID
,依此类推。
但是,Company Name
,Company ID
等未在DataProperty类中定义。它们的值将从数据文件插入到_rows中。
感谢任何帮助。以下是一些帮助您理解我的问题的代码。
List<DataProperty> allData = new List<DataProperty>();
DataProperty类由
组成private readonly Dictionary<string, string> _headers = new Dictionary<string, string>();
private readonly List<string[]> _rows = new List<string[]>();
和这些方法(以及其他):
public string[] GetDataRow(int rowNumber){return _rows[rowNumber];}
public void AddDataRow(string[] row){_rows.Add(row);}
答案 0 :(得分:1)
根据您的评论,如果您需要为每家公司sum
,您可以尝试这样做:
var RowList1 = allData.SelectMany(u => u._rows.Select(t => new
{
CompanyName = t[5],
Amount = Convert.ToInt64(t[1]) + Convert.ToInt64(t[2])
}))
.Where(u => u.CompanyName == "XXX")
.OrderBy(u => u.CompanyName)
.ToList();
如果你需要总结所有公司,你可以试试这个:
var SumAmount = allData.SelectMany(u => u._rows.Select(t => new
{
CompanyName = t[5],
Amount = Convert.ToInt64(t[1]) + Convert.ToInt64(t[2])
}))
.Where(u => u.CompanyName == "XXX")
.DefaultIfEmpty()
.Sum(u => u.Amount);
您可以使用这些
编写自己的自定义查询答案 1 :(得分:0)
首先,您可以接收行,然后遍历它们。 这个例子可以帮到你
var rows = (from DataRow dRow in dTable.Rows
select new {col1=dRow["dataColumn1"],col2=dRow["dataColumn2"]});
foreach (var row in distinctRows)
{
var value1=row.col1.ToString();
var value2=row.col2.ToString();
}
答案 2 :(得分:0)
您可以使用它来获取所有公司名称:
var AllCompanyNames = allData.SelectMany(u => u._rows.Select(t => t[5])).ToList();
这就是为了获得更多财产:
var Rows = allData.SelectMany(u =>
u._rows.Select(t => new
{
CompanyName = t[5],
Other1 = t[1],
Other2 = t[2]
}))
.ToList();
并且,如果您需要检查任何条件:
var FilteredRows = allData.SelectMany(u =>
u._rows.Select(t => new
{
CompanyName = t[5],
Other1 = t[1],
Other2 = t[2]
}))
.Where(u => u.CompanyName == "XXX")
.ToList();