gpt4 book ai didi

c# 对象列表过滤(linq?)

转载 作者:行者123 更新时间:2023-11-30 20:31:59 25 4
gpt4 key购买 nike

我有一个对象列表 IEnumerable<Item> ,让我们称之为项目。元素有属性 Item.Subitems这是一个子项目列表。列表大约有 500 个项目,每个项目平均有 10 个子项目。

这些都是“内存中”的对象(在这个级别没有数据库查询)。

我想要一个函数:

public static string GetSubitemValue( int id )
{
return Items.SelectMany( i => i.Subitems ).FirstOrDefault( si => si.id == id).Value;
}

函数GetSubitemValue将在一个进程调用期间被多次调用(假设 500 次)(这是 Razor View 渲染过程的一部分)。

是否有任何支持可重复列表搜索(迭代?)的内置 linq 增强功能。我应该自己做一些缓存或索引吗?

最佳答案

据我所知,没有内置机制可以增强多种排序。但是,您可以按如下方式实现返回值的缓存。

private static Dictionary<int,string> Cache = new Dictionary<int,string>();

public static string GetSubitemValue(int id)
{
if (!Dictionary.Contains(id))
{
Dictionary[id]
= Items.SelectMany(i => i.Subitems)
.FirstOrDefault(si => si.id == id).Value;
}
return Dictionary[id];
}

但是,请注意,如果 Items 不包含所需的 ID,您的初始代码片段会抛出异常。

关于c# 对象列表过滤(linq?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42267578/

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