如何将带有连接的 linq 查询转换为方法语法?

问题描述 投票:0回答:1

我想将其更改为 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 表达式编写它。任何帮助将不胜感激。

c# linq backend
1个回答
3
投票

您需要

Join
方法,该方法需要四个参数:

  1. 您要加入的枚举
  2. 第一个可枚举中的选择器
  3. 第二个可枚举中的选择器
  4. 两个可枚举的选择器

比较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,
        });

你可以思考一下是方法还是查询语法更具可读性。

© www.soinside.com 2019 - 2024. All rights reserved.