无法将类型'System.Tuple <string,string,double>'隐式转换为'System.Collections.Generic.List <system.tuple <string,string,double >>'

时间:2018-11-29 18:48:30

标签: c# tuples

我有2个元组

List<Tuple<string, string, double>> _AllBatchList = new List<Tuple<string, string, double>>(); 


List<Tuple<string, string, double>> _tmpBatchList = null;

以这种方式添加数据

for (int row = 0; row < b1MatrixItemD.RowCount; row++)
{ 
    string _WtmpBatchNo = ((EditText)b1MatrixItemD.Columns.Item("Col_0").Cells.Item(row + 1).Specific).Value;   
    string _WtmpItemNo = ((EditText)b1MatrixItemD.Columns.Item("Col_1").Cells.Item(row + 1).Specific).Value;
    double _WtmpTotalQty = 0;   
    double.TryParse(((EditText)b1MatrixItemD.Columns.Item("Col_5").Cells.Item(row + 1).Specific).Value, out _WtmpTotalQty);

    _AllBatchList.Add(new Tuple<string, string, double>(_WtmpBatchNo, _WtmpItemNo, _WtmpTotalQty));
}

我要过滤数据并分配相同类型的元组类型

_tmpBatchList = _AllBatchList.Find(t => t.Item2 == _WtmpItemNo);

并遍历元组

foreach (var item in _tmpBatchList)
{   
    doc.Lines.BatchNumbers.BatchNumber = item.Item1;    
    doc.Lines.BatchNumbers.Quantity = double.Parse(_WtmpTotalQty);
    doc.Lines.BatchNumbers.Add();
}

但是此行会产生以上错误

_tmpBatchList = _AllBatchList.Find(t => t.Item2 == _WtmpItemNo)

需要解决此问题的建议

1 个答案:

答案 0 :(得分:1)

在这种情况下,Find()方法将返回类型为Tuple<string, string, double>的对象。

您正在尝试将其分配给类型为List<Tuple<string, string, double>>的变量,因此会出现错误。

尝试将找到的对象分配给变量:

var obj = _AllBatchList.Find(t => t.Item2 == _WtmpItemNo);

如果您要查找满足此条件的所有物品,请改用Where方法:

_tmpBatchList = _AllBatchList.Where(t => t.Item2 == _WtmpItemNo);