MVC LINQ按模型排序
本文关键字:排序 模型 LINQ MVC | 更新日期: 2023-09-27 18:27:49
for each循环可以正确设置PickupDistanceSort
列,但我无法让模型进行排序,以便根据新设置的PickupDistanceSort
值按升序显示行。CCD_ 3是long的数据类型。模型显示在视图中,只是没有进行排序在将模型发送到视图之前,如何对其进行排序
public ActionResult JobsDistanceSorted()
{
var model = from j in db.Jobs select j;
foreach (var item in model)
{
item.PickupDistanceSort = ICN.CustomMethods.
GetDistance(34.180046081543, -118.309028625488,
item.PickupLatitude, item.PickupLongitude);
}
model = model.OrderBy(s => s.PickupDistanceSort);
return View("JobHeadings", model);
}
您必须将其转换为本地存储项目的List,然后才能在本地列表上调用OrderBy。对IQueryable调用OrderBy将导致新的数据库查询,其中不存储值。
public ActionResult JobsDistanceSorted()
{
var model = db.Jobs.ToList();
foreach (var item in model)
{
item.PickupDistanceSort = ICN.CustomMethods.
GetDistance(34.180046081543, -118.309028625488,
item.PickupLatitude, item.PickupLongitude);
}
return View("JobHeadings", model.OrderBy(s => s.PickupDistanceSort));
}
如果PickupDistanceSort
不是.Net类型,则需要为您的类型添加IEqualityComparer
,并像这样使用OrderBy
(PickupDistanceComparer是自定义比较器的名称):
model = mode.OrderBy(s => s.PicupDistanceSort, new PickupDistanceComparer());