Как осуществлять центр в LINQ?

Доброе утро. Кто-то осуществлять центр динамика с LINQ, которая облегчала бы мне более ясную информацию, чтобы реализовывать ее, и если возможно, как экспортировать Excel? Я работаю с C# LINQ Webapi MVC.

0
задан 08.03.2016, 22:59
2 ответа

Таким образом уже я функционирует центр, мне остается экспортировать в excel с клиента mvc в Веб api.

    public dynamic consolidado()
    {
        string fechastring = String.Format("{0:MM/dd/yyyy}", "01/03/2016");
        DateTime fechagenda = Convert.ToDateTime(fechastring);
        string fechastring2 = String.Format("{0:MM/dd/yyyy}", "07/03/2016");
        DateTime fechagenda2 = Convert.ToDateTime(fechastring2);
        _ctx.Database.CommandTimeout = 1000;

        var data = (from p in _ctx.Proyecto
                    join movequi in _ctx.MovimientoEquipo on p.IdTarea equals movequi.IdTarea into movequi_join
                    from movequi in movequi_join.DefaultIfEmpty()
                    join movmat in _ctx.MovimientoMaterial on p.IdTarea equals movmat.IdTarea into movmat_join
                    from movmat in movmat_join.DefaultIfEmpty()
                    where
                      p.segmento == 2 &&
                      p.CodigoActividad.IdArea == 4 &&
                      (System.Data.Entity.DbFunctions.TruncateTime(p.FechaAgenda) >= fechagenda.Date && System.Data.Entity.DbFunctions.TruncateTime(p.FechaAgenda) <= fechagenda2.Date)
                    select new
                    {
                        proyecto = p.idProyecto,
                        estado = p.idEstado,
                        CodigoxxxEquipo = (movequi.TipoEquipo.xxxx?? "NA"),
                        Serial = (movequi.Serial ?? ""),
                        Codigoxxxx = (movmat.Material.xxxx?? "NA"),
                        Cantidad = ((System.Int32?)movmat.Cantidad ?? (System.Int32?)0),

                    }).ToList();

        var proyecto = from d in data
                       group d by d.proyecto into grp
                       select new
                       {
                           ProyectoID = (int)grp.Key,
                           Equipos = grp.Select(e => new { e.CodigoxxxxEquipo, e.Serial, e.Codigoxxxx, e.Cantidad }).ToList()
                       };

        var codequipo = (from p in _ctx.Proyecto
                           join movequi in _ctx.MovimientoEquipo on p.IdTarea equals movequi.IdTarea
                           where
                             p.segmento == 2 &&
                             p.CodigoActividad.IdArea == 4 &&
                             (System.Data.Entity.DbFunctions.TruncateTime(p.FechaAgenda) >= fechagenda.Date && System.Data.Entity.DbFunctions.TruncateTime(p.FechaAgenda) <= fechagenda2.Date)
                           select new
                           {
                               movequi.TipoEquipo.Codigoxxxx
                           }).Distinct();

        var codmaterial = (from p in _ctx.Proyecto
                           join movmat in _ctx.MovimientoMaterial on p.IdTarea equals movmat.IdTarea
                           where
                             p.segmento == 2 &&
                             p.CodigoActividad.IdArea == 4 &&
                             (System.Data.Entity.DbFunctions.TruncateTime(p.FechaAgenda) >= fechagenda.Date && System.Data.Entity.DbFunctions.TruncateTime(p.FechaAgenda) <= fechagenda2.Date)
                           select new
                           {
                               movmat.Material.Codigoxxxx
                           }).Distinct();

        DataTable dt = new DataTable();

        /*for static cols*/
        dt.Columns.Add("Proyecto_ID");

        /*for dynamic cols*/
        foreach (var subject in codequipo)
        {
            dt.Columns.Add(subject.Codigoxxxx.ToString() +"-EquipoInst" );
        }
        foreach (var subject in codmaterial)
        {
            dt.Columns.Add(subject.Codigoxxxx.ToString() + "-MaterialInst");
        }

        /*pivot the data into a new datatable*/
        foreach (var g in proyecto)
        {
            DataRow dr = dt.NewRow();
            dr["Proyecto_ID"] = g.ProyectoID;

            foreach (var mark in g.Equipos)
            {
                if(mark.CodigoxxxxEquipo !="NA"){
                dr[mark.CodigoxxxxEquipo + "-EquipoInst"] = mark.Serial;
                }
                if (mark.Codigoxxxx != "NA")
                {
                dr[mark.Codigoxxxx + "-MaterialInst"] = mark.Cantidad;
                    }

            }
            dt.Rows.Add(dr);
        } 

        return dt;
    }
0
ответ дан 24.11.2019, 14:46

Существует расширение method, что ты мог бы применять

, такой центр расширение

Как края организации

public class Employee {
    public string Name { get; set; }
    public string Department { get; set; }
    public string Function { get; set; }
    public decimal Salary { get; set; }
}

может выбирать из-за которых свойств изменять команду

var result1 = l.Pivot(emp => emp.Department, 
                      emp2 => emp2.Function, 
                      lst => lst.Sum(emp => emp.Salary));

или а seelccionar другое свойство для pivotear

var result2 = l.Pivot(emp => emp.Function, 
                      emp2 => emp2.Department, 
                      lst => lst.Count());
2
ответ дан 24.11.2019, 14:46