微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linq 中的特定查询它与 SQL Server 中的内部联接执行的操作不同

如何解决Linq 中的特定查询它与 SQL Server 中的内部联接执行的操作不同

正在执行此查询以从相应的产品相关表中获取区域和类别名称

IQueryable<Productosviewmodel> ProductosMaped = 
      from p in Db.Productos
      join g in Db.Zona on p.ZonaId equals g.ZonaId
      join acr in Db.Categoria on p.CategoriaId equals acr.Id
      select new Productosviewmodel
                 {
                     Categoria        = acr.NombreCategoria,ZonaGrupo        = g.ZonaGrupo,NombreProducto   = p.NombreProducto,ProductoTiene    = p.ProductoTiene,RealizadosEvento = p.RealizadosEvento,FechaInicial     = p.FechaInicial,FechaFin         = p.FechaFin,};

sql 查询的结果返回 products 表必须具有的 1000 条记录及其区域和类别。

在 linq 中执行以下操作时,它仅返回 8 条记录...

for root,dirs,files in os.walk(my_root_directory):
    for f in files:
        if os.path.splitext(f)[1] != '.wav':
            continue
        file_path = os.path.join(root,f)
        # do your stuff

我只需要链接这两个表,以便列表只显示 CategoryName 和 ZoneName 或 Group Zone。

解决方法

更好的主意:将 Include 与导航属性一起使用:

List<ProductosViewModel> list = await this.Db.Productos
    .Include( p => p.Zona )
    .Include( p => p.Categoria )
    .Where( p => p.Categoria != null && p.Zona != null ) // <-- This step may be optional depending on your database.
    .Select( p => new ProductosViewModel
    {
        Categoria        = p.Categoria.NombreCategoria,ZonaGrupo        = p.Zona.ZonaGrupo,NombreProducto   = p.NombreProducto,ProductoTiene    = p.ProductoTiene,RealizadosEvento = p.RealizadosEvento,FechaInicial     = p.FechaInicial,FechaFin         = p.FechaFin,} )
    .ToListAsync()
    .ConfigureAwait(false);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。