2017-08-12 31 views
1

我正在尝试使用下面的代码更新列表中的一个条目,但仍然没有运气。如何使用c更新列表中的条目#

entries.PhonebookList[entries.PhonebookList.FindIndex(ab => ab.Equals(fName))] = fNameNew; 

我对我的参数fNameNew得到了一个错误,它说,我不能隐式转换类型“字符串”到x.PhonebookItem。

+0

fNameNew的值是什么,phonebookitem的属性是什么? – Sajeetharan

+0

var fNameNew = Console.Readline(); PhonebookItem有名字,姓氏和号码。 – anonymousRey

+0

看起来'PhonebookList'不是一个字符串列表,而是一个你定义的一个对象列表,叫做'PhonebookItem'。 – David

回答

1

你应该分配fNameNew对象的名字属性,所以它应该是

entries.PhonebookList[entries.PhonebookList.FindIndex(ab => ab.FirstName.Equals(fName))].firstname = fNameNew; 
+0

不应该像'ab.FirstName.Equals(fName)'? –

+0

@AkashKC对呀! – Sajeetharan

+1

你们真的很棒。它现在工作。谢谢你的所有帮助:) – anonymousRey

1

它应该是这样的:

entries 
.PhonebookList[ 
    entries 
    .PhonebookList 
    .FindIndex(ab => 
     ab.FirstName.Equals(fName)) 
].FirstName= fNameNew; 
+0

它使用这段代码工作。谢谢:) – anonymousRey

1

两个问题:

首先,试图将整个对象与单个字符串进行比较:

entries.PhonebookList.FindIndex(ab => ab.Equals(fName)) 

你只想一个财产该对象上比较字符串:

entries.PhonebookList.FindIndex(ab => ab.FirstName.Equals(fName)) 

在这一点上你成功引用列表中的一个对象:

entries.PhonebookList[entries.PhonebookList.FindIndex(ab => ab.FirstName.Equals(fName))] 

但第二问题是你不能将整个对象设置为一个字符串。相反,只需设置属性:

entries.PhonebookList[entries.PhonebookList.FindIndex(ab => ab.FirstName.Equals(fName))].FirstName = fNameNew; 
+0

这一个工程。 entries.PhonebookList [entries.PhonebookList.FindIndex(ab => ab.FirstName.Equals(fName))]。FirstName = fNameNew; – anonymousRey

+0

非常感谢你:) – anonymousRey

0

那些回答这个问题的人。非常感谢你。下面的代码适用于我。

entries.PhonebookList[entries.PhonebookList.FindIndex(ab => ab.FirstName.Equals(fName))].FirstName = fNameNew; 

拥有幸福的每一天都:)你们是真是太神奇了。 :)

+0

你已经接受了答案,不需要在这里发表 – Eldho

相关问题