C# 将链接列表合并到一个列表中
我正试图返回一个列表,但在下面的列表中遇到了问题 我使用了下面的lambda表达式来生成一个字符串列表C# 将链接列表合并到一个列表中,c#,linked-list,lambda,C#,Linked List,Lambda,我正试图返回一个列表,但在下面的列表中遇到了问题 我使用了下面的lambda表达式来生成一个字符串列表 var lstItems = rows.SelectMany(x => x).ToList(); 注意:“行”是一种链表,即,LinqToExcel.Query.ExcelQueryable 输入列表如下: rows cell [0] ------[0] {"myValue1"} [1] {1} [2]
var lstItems = rows.SelectMany(x => x).ToList();
注意:“行”是一种链表,即,LinqToExcel.Query.ExcelQueryable 输入列表如下:
rows cell
[0] ------[0] {"myValue1"}
[1] {1}
[2] {"abc"}
[1] ------[0] {"myValue2"}
[1] {1}
[2] {"pqr"}
[2] ------[0] {"myValue3"}
[1] {5}
[2] {"ppp"}
and so on..
结果列表如下所示
List<string> lstItems = [0] - {"myValue1"}
[1] - {1}
[2] - {"abc"}
[3] - {"myValue2"}
[4] - {1}
[5] - {"pqr"}
[6] - {"myValue3"}
[7] - {5}
[8] - {"ppp"}
List lstItems=[0]-{“myValue1”}
[1] - {1}
[2] -{“abc”}
[3] -{“myValue2”}
[4] - {1}
[5] -{“pqr”}
[6] -{“myValue3”}
[7] - {5}
[8] -{“ppp”}
结果列表将是要合并到一个列表中的所有行的单元格值,并且应该按照给定的输入行-单元格顺序
我可以通过以下代码实现所需的输出:
List<string> lstExcelData = new List<string>();
foreach (LinqToExcel.Row row in rows)
{
foreach (LinqToExcel.Cell cell in row)
{
lstExcelData.Add(cell.Value.ToString().Trim());
}
}
List lstexeldata=newlist();
foreach(行中的LinqToExcel.Row)
{
foreach(行中的LinqToExcel.Cell单元)
{
添加(cell.Value.ToString().Trim());
}
}
但如果可能,使用lambda表达式会更好,因为我总是喜欢使用lambda表达式进行迭代。您可以尝试以下方法:
var lstItems = rows.Select((row,index) => new {
Cells = row.Select(x => x.ToString())
.ToList(),
RowIndex = index
}).ToList();
这将为您提供具有单元格值的所有行,例如,您可以访问第三个行的第二个单元格
值,如下所示:
var value = lstItems[2].Cells[1];
老实说,我从未使用过LinqToExcel
,因此我不知道其中的类、属性等,因此请不要否决这个答案。:)提供反馈,如果可能的话,我会努力改进
List<string> lstExcelData = new List<string>();
lstExcelData = rows.SelectMany(row => row.Select(cell => cell.Cast<string>())).ToList();
List lstexeldata=newlist();
lstExcelData=rows.SelectMany(row=>row.Select(cell=>cell.Cast()).ToList();
希望这能有所帮助。你能给我们提供一个小样本输入数据和该数据所需的输出格式吗?@samar:修改了问题,前面提到的输入和输出LinqToExcel.Query.ExcelQueryable不包含“ForEach”的定义,并且找不到接受“LinqToExcel.Query.ExcelQueryable”类型的第一个参数的扩展方法“ForEach”。我试图将“行”强制转换为已知类型,但效果不好..:('LinqToExcel.Row'(即,Row)不包含'Cells'的定义,并且找不到接受'LinqToExcel.Row'类型的第一个参数的扩展方法'Cells':(抱歉…引发解析器异常…无法解析表达式'值(LinqToExcel.Query.ExcelQueryable`1[LinqToExcel.Row])。SelectMany(Row=>Row.Select(cell=>cell.Cast())“:当前不支持“System.Linq.Queryable.SelectMany”方法的此重载,但如果需要,您可以注册自己的解析器。我确信您的答案应该适用于真正的链表场景,而不是LinqToExcel列表。感谢您的帮助和快速响应。请在不将其标记为答案的情况下对您的上一个答案进行投票。”。