左加入林克不在Nocommerce服务工作
本文关键字:Nocommerce 服务工作 林克 | 更新日期: 2023-09-27 18:24:31
我使用的是nocommerce 3.4,其中我必须显示所有供应商列表,并在此基础上显示它们的重新存储位置,因此要从左表(vendor)操作的两个表我需要所有记录,从右表(Resturant)我只需要匹配的记录。如果记录不匹配,则显示0。
因此我创建了GetAllList()的服务
public virtual IPagedList<ResturantCoordinatesModel> GetAllList(int pageIndex = 0, int pageSize = int.MaxValue)
{
var Resturant = (from r in _resturantCoordinates.Table
select r).ToList().AsEnumerable();
var vendor = _vendorService.GetAllVendors().ToList();
IList<ResturantCoordinatesModel> model = new List<ResturantCoordinatesModel>();
var query = from v in vendor
join r in Resturant on v.Id equals r.VendorId into gj
from rt in gj.DefaultIfEmpty()
orderby rt.Id
select new { rt.Id, v.Name, Latitude = (double?)rt.Latitude, Longitude = (double?)rt.Longitude };
}
但在中,var query不返回任何结果。它返回未设置为对象实例的对象引用错误。请建议
尝试由Linq 使用
foreach(var v in vendor)
{
var s = new ResturantCoordinatesModel();
var values = new NopDestek.StoreMapFinder.Domain.Resturant_Coordinates();
values = (from t in _resturantCoordinates.Table
where t.VendorId == v.Id
select t).FirstOrDefault();
s.Id = v.Id;
s.Name = v.Name;
s.Latitude = values == null? 0 : values.Latitude;
s.Longitude = values == null ? 0 : values.Longitude;
model.Add(s);
}
希望这有帮助,
谨致问候,Vinit