如何从包含 getter 中的 int 变量的 List<class> 填充 List<int>
Posted
技术标签:
【中文标题】如何从包含 getter 中的 int 变量的 List<class> 填充 List<int>【英文标题】:How to populate List<int> from List<class> that contains int variable in getter 【发布时间】:2022-01-17 20:25:57 【问题描述】:例如:
public List<Data> dataList;
public List<int> idList;
public class Data
public int id;
public string name;
我需要将所有“id”变量从“dataList”获取到“idList”。 类似的东西
public List<Data> dataList;
public List<int> idList
get
for (int i = 0; i < dataList.Count; i++)
idList.Add(dataList[i].id);
return idList
;
但是如何以更好的方式优化呢?
我尝试创建本地列表,用 id 填充它,然后将其提供给“idList”。但是我觉得这个方法没有优化
【问题讨论】:
使用 LINQ docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…。在这种情况下idList = dataList.Select(d => d.id).ToList();
我认为如果没有很好的理由,你根本不应该做这样的事情,因为数据已经存在于你的类中并且很容易访问。
But how to optimize this in a better way?
.. 你的意思是如何让它不以异常结束? ;) 目前您在 getter 中递归访问 idList
^^
【参考方案1】:
您可以为此使用 Linq Select
public List<Data> dataList;
public List<int> idList
get
return dataList.Select(x => x.Id).ToList();
;
以更紧凑的方式
public List<int> idList => dataList.Select(x => x.Id).ToList();
更多关于 LINQ here.
【讨论】:
谢谢,这就是我想要的。完全忘记了LINQ。尝试以通常的方式完成。 非常欢迎我的朋友@КириллДосын 这确实是我会做的 ..@КириллДосын 但请注意,现在这与“手动”编写它的方式不同 .. 它与使用 for 循环写出一样有效(或者如果您使用正确的容量初始化列表);)以上是关于如何从包含 getter 中的 int 变量的 List<class> 填充 List<int>的主要内容,如果未能解决你的问题,请参考以下文章
为什么不能将包含int和long变量的算术表达式的结果分配回int变量?
NSFetchedResultsController 中的 NSPredicate 不使用 Category 的 getter