【发布时间】:2022-01-24 08:38:18
【问题描述】:
我在想是否值得在我的函数中将 querable 更改为 array/list,这会在参数中采用一个集合,然后通过各种 linq 语句逐步减少该集合(但不是全部合二为一)。
所以我的问题是值得每次将IEnumerable 变量转换为具有.ToArray() 扩展名的数组,尽管我只想使用该变量一次?
我读到 querable 与.Count 一起工作(性能)效果不佳(我在每个下一个 linq 语句中使用一个计数,并根据先前的变量创建新的、减少的集合),所以很难决定哪个更好。
我使用的集合是这样的:IReadOnlyCollection<XYZ> infos
后来:
var positionsWithCoordinates = infos.Where(t => t.Long.HasValue && t.Lat.HasValue).ToArray();
if (positionsWithCoordinates.Length < infos.Length)
{
Logger.Warn(m => m("xyz \n ({0})", posWithCoordinates.Where(p => !infos.Contains(p)).ToString()));
}
var previousTrips = new List<xyz>();
foreach (var trip in posWithCoordinates)
{
previousTrips.Add(await context.TrackerTrips
.Where.Where.Where.OrderBy.ConfigAwait
}
var validDataTrips = previousTrips.Where(l => l.Lat.HasValue || l.Long.HasValue).ToArray();
if (validDataTrips.Length < previousTrips.Count)
{
}
等等。等等,我创建了许多新变量,但几乎与上面的逻辑相同。
【问题讨论】:
-
我们无法真正回答这个问题,因为我们不知道您的方法是做什么的,它在系统中的使用方式,支持数据的托管方式等等。与许多事情一样,答案是“这取决于”。您有具体的示例可以详细说明吗?
-
请展示一些代码来演示您使用
IQueryables 所做的事情。 -
取决于你打算用它做什么。
标签: c# arrays linq ienumerable