属性或索引器不能分配给“ - ”它只读C#List <tuple <string,bool =“”>&gt;

时间:2017-01-30 15:29:39

标签: c# .net asp.net-mvc tuples

我创建了以下类:

namespace Prototype.ViewModel.MyVM
{
    public clas TheVm
    {
        List<Tuple<string, bool>> list = new List<Tuple<string, bool>>();
        public List<Tuple<string, bool>> List 
        { 
            get { return this.list; } 
            set { this.list = value; } 
        }
    }
}

在另一个代码文件中,我正在尝试修改封装List&gt;的其中一个值。对象:

for (int i = 0; i < anotherList.Count; i++)
{
    TheVM.List[i].Item2 = (anotherList[i].Item2 == 1);
}

但是我收到以下错误消息:

属性或索引器'Tuple.Item2'不能分配给“ - ”它是只读的。

我该如何解决?

2 个答案:

答案 0 :(得分:6)

您需要创建一个新的元组,因为它们是不可变的:

for (int i = 0; i < anotherList.Count; i++)
{
    TheVM.List[i] = new Tuple<string, bool>(TheVM.List[i].Item1, anotherList[i].Item2 == 1);
}

这就是说,我建议不要使用元组来查看模型。

答案 1 :(得分:1)

如果您需要在创建元组后更改其中的一部分,则不需要元组,只需创建自己的类:

BOX = [
"aa1",
"aa2",
"aa3"]

for B in BOX:

    filename = B+".xls"

    #create data frame
    BDF = pd.read_excel(r'C:\Projects\BOXES\\' + filename)
    #clean data frame
    BDF = BDF.dropna(how="all")
    BDF['Total Cost'] = BDF['Total Cost'].str.replace('.', '')
    BDF.columns = ['LVL', 'PN', 'Leadtime', 'Description', 'Ext QTY']
    BDF.PN = BDF.PN.str.strip()

    sheetname=B
    #save to sheet
    with pd.ExcelWriter(r'C:\Projects\BOXES\BOXED.xlsx') as writer:
        BDF.to_excel(writer, sheet_name=B, index=False)
    #delete data frame before repeating 
    del(BDF)
    del(B)

之后,您可以将列表定义为:

public class MyTuple
{
   public MyTuple(string item1, bool item2)
   {
     Item1 = item1;
     Item2 = item2; 
   }
   public string Item1 {get;set;}
   public bool Item2 {get;set;}
}

并且可以更改Item1 / Item2