Pur*_*ome 2 foreach .net-3.5 linq-to-sql
我不确定这是执行以下代码的最佳方式.我不是在另一个foreach的foreach中出售的.这可以用Linq做得更好**吗?
*我明白,更好的可能是
a)更高性能
b)更容易阅读/更优雅
c)以上所有
注意:接受.NET 3.5解决方案:)注意2:两个IList是通过Linq2Sql的多记录集存储过程的结果.
这是make相信代码:
// These two lists are the results from a IMultipleResults Linq2Sql stored procedure.
IList<Car> carList = results.GetResult<Car>().ToList();
IList<Person> people = results.GetResult<Person>().ToList();
// Associate which people own which cars.
foreach(var person in people)
{
var cars = (from c in cars
where c.CarId == person.CarId
select c).ToList();
foreach (var car in cars)
{
car.Person = person;
}
}
Run Code Online (Sandbox Code Playgroud)
干杯:)
我不认为表现会有任何不同,但如果你正在寻找简洁性:
var q = from person in people
join car in cars on person.CarId equals car.CarId
select new { car, person };
foreach(var o in q)
{
o.car.Person = o.person;
}
Run Code Online (Sandbox Code Playgroud)
编辑:在Jon对这个版本的提示更快之后,我很好奇并且描述了这两个功能.这个版本看起来快两倍,令人惊叹.我检查了拆卸.原始实现的开销似乎来自为外部和内部循环创建的新枚举器,导致P次新/处置开销.
对于此代码,只创建了一个枚举器,我认为这是"加入"功能的神奇之处.我没有检查它是如何工作的.
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |