我想将其更改为 c# 中的 lambda 查询
var innerJoinTasinmaz =
from tasin in _context.Tasinmaz
join mahalle in _context.Mahalle on tasin.MahalleID equals mahalle.AreaID
join ilce in _context.Ilce on tasin.CountyID equals ilce.CountyID
join il in _context.Il on tasin.CityID equals il.CityID
select new{
tasinmazID = tasin.TasinmazID,
cityName = il.CityName,
countyName = ilce.CountyName,
areaName = mahalle.AreaName,
ada = tasin.Ada,
parsel = tasin.Parsel,
nitelik = tasin.Nitelik,
adres = tasin.Adres,
isActive = tasin.isActive,
};
我正在努力用 Lambda 表达式编写它。任何帮助将不胜感激。
Join
方法,该方法需要四个参数:
比较2和3中的值是否相同,如果相同,则使用4中的选择器来选择要使用的属性。在您的示例中,它看起来像:
var innerJoinTasinmaz =
_context.Tasinmaz
.Join(_context.Mahalle, x => x.MahalleId, y => y.AreaID, (x, y) => new { tasin = x, mahalle = y })
.Join(_context.Ilce, x => x.tasin.CountyID, y => y.CountyId, (x, y) => new { tasin = x.tasin, mahalle = x.mahalle, ilce = y })
.Join(_context.Il, x => x.tasin.CityId, y => y.CityId, (x, y) => new
{
tasinmazId = x.tasin.TasinmazID,
cityName = y.CityName,
countyName = x.ilce.CountyName,
areaName = x.mahalle.AreaName,
ada = x.tasin.Ada,
parsel = x.tasin.Parsel,
nitelik = x.tasin.Nitelik,
adres = x.tasin.Adres,
isActive = x.tasin.isActive,
});
你可以思考一下是方法还是查询语法更具可读性。