在C#中,如果我有一个List<T>
,并且我有一个T
类型的对象,我如何用T
类型的对象替换List<T>
中的特定项?
下面是我的尝试:
List<CustomListItem> customListItems = new List<CustomListItem>();
CustomListItem customListItem1 = new CustomListItem() { name = "Item 1", date = DateTime.MinValue};
CustomListItem customListItem2 = new CustomListItem() { name = "Item 2", date = DateTime.MinValue };
CustomListItem customListItem3 = new CustomListItem() { name = "Item 3", date = DateTime.MinValue };
customListItems.Add(customListItem1);
customListItems.Add(customListItem2);
customListItems.Add(customListItem3);
CustomListItem newCustomListItem = new CustomListItem() { name = "Item 4", date = DateTime.Now };
customListItem2 = customListItems.Where(i=> i.name == "Item 2").First();
customListItem2 = newCustomListItem;
在上面的代码中,我想用newCustomListItem
替换customListItem2
。
我是否必须删除列表中的项,然后插入新项?我不能对customListItem2 = newCustomListItem
进行简单的赋值吗?
用列表中的一个项目替换另一个项目的最有效方法是什么?
先谢了
5条答案
按热度按时间nwlls2ji1#
您必须替换项目,而不是
customListItem2
的值。只需替换以下内容:用这个:
正如Roman R.在评论中所说的,可以用简单的
First(predicate)
替换.Where(predicate).First()
:czq61nw12#
或
然后
2exbekwf3#
如果列表顺序对您不重要,那么您可以尝试以下操作
rjee0c154#
您可以使用select来构建具有替换项的新iEnumerable:
我没有测试性能,但我发现这个解决方案非常简洁和明确。
vsmadaxz5#
另一种方法是使用
DynamicData
包,它的列表中有很多其他工具:快速解答
确保软件包已安装:
那么
以下是完整的工作溶液。
工作示例
我的自定义项目类
大体上试试这个,确保在替换之前注解掉赋值。