gpt4 book ai didi

c# - 如何仅从列表中选择某些属性设置为 true 的项目

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:36 27 4
gpt4 key购买 nike

我有一个名为 ItemCollection 的集合,它看起来像:

public class ItemCollection : List<Item>
{
}

Item 有一个名为 MyProperty 的属性:

public class Item
{
public bool MyProperty { get; set; }
}

我还有一个 ItemManager,它有一个返回 ItemCollectionGetItems 方法。

现在我只想从 ItemCollection 中获取 MyProperty 设置为 true 的项目。

我试过:

ItemCollection ic = ItemManager.GetItems().Where(i => i.MyProperty);

很遗憾,Where 部分不起作用。虽然 i 指的是 Item 我得到了错误

Cannot implicitly convert type Item to ItemCollection.

如何过滤返回的 ItemCollection 以仅包含那些将 MyProperty 设置为 true 的 Item

最佳答案

部分回答/评论都提到了

(ItemCollection)ItemManager.GetItems().Where(i => i.MyProperty).ToList()

由于向上转换,这将不起作用。相反,上面会产生一个 List<Item> .

以下是完成这些工作所需的内容。请注意,您需要能够修改 ItemCollection类,以便它工作。


构造函数

如果您想为 ItemCollection 创建构造函数类,那么以下应该有效:

public ItemCollection(IEnumerable<Item> items) : base(items) {}

要调用构造函数,您需要执行以下操作:

var ic = new ItemCollection(ItemManager.GetItems().Where(i => i.MyProperty));

ItemCollection ic = new ItemCollection(ItemManager.GetItems().Where(i => i.MyProperty));


关于错误消息的注意事项

在评论里,要求改的时候ItemCollection ic = ItemManager.GetItems.....var ic = ItemManager.GetItems.....然后告诉我们 ic 的类型是什么是的,你提到你得到了Systems.Collections.Generic.List<T>这将转化为 List<Item> .您收到的错误信息实际上不是您应该收到的错误信息,这很可能只是因为IDE被混淆了,页面出现错误时偶尔会出现这种情况。你应该收到的是更多类似的东西:

Cannot implicitly convert type IEnumerable<Item> to ItemCollection.

关于c# - 如何仅从列表中选择某些属性设置为 true 的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23655472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com