本文整理汇总了C#中Data.List.GroupBy方法的典型用法代码示例。如果您正苦于以下问题:C# List.GroupBy方法的具体用法?C# List.GroupBy怎么用?C# List.GroupBy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Data.List
的用法示例。
在下文中一共展示了List.GroupBy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: UpdateErectionSequence
/// <summary>
/// The update erection sequence.
/// </summary>
/// <param name="factory">
/// The factory.
/// </param>
/// <param name="project">
/// The project.
/// </param>
/// <param name="erectionSequenceList">
/// The erection sequence list.
/// </param>
/// <returns>
/// The System.Boolean.
/// </returns>
public bool UpdateErectionSequence( string factory, string project, List<KeyValuePair<int, int>> erectionSequenceList )
{
project = project.PadLeft( 12 );
List<string> statementList = new List<string>( erectionSequenceList.Count );
using( var database = new ImpactDatabase() )
{
var allIdArray = erectionSequenceList.Select( x => (object)x.Key ).ToArray();
ImpactQuery query = new ImpactQuery
{
Select = {
ImpModelPlanning.ElementId
},
From = {
ImpModelPlanning.As( "T1" )
},
Where =
{
ImpModelPlanning.Factory.Equal( factory ),
ImpModelPlanning.Project.Equal( project ),
ImpModelPlanning.ElementId.In( allIdArray ),
},
};
string statement = query.ToString();
var existingPlanningList = database.GetAll( statement, column => column[0].Cast<int>() );
var groupedByInsertUpdate = erectionSequenceList.GroupBy( x => existingPlanningList.Remove( x.Key ) ).ToList();
var updateList = groupedByInsertUpdate.Find( x => x.Key );
var insertList = groupedByInsertUpdate.Find( x => !x.Key );
if( null != updateList )
{
foreach( var item in updateList )
{
var update = new ImpactUpdate( ImpModelPlanning.Instance )
{
Columns = {
{ ImpModelPlanning.ErectionSequenceNo, item.Value }
},
Where =
{
ImpModelPlanning.Factory.Equal( factory ),
ImpModelPlanning.Project.Equal( project ),
ImpModelPlanning.ElementId.Equal( item.Key ),
}
};
statementList.Add( update.ToString() );
}
}
if( null != insertList )
{
foreach( var item in insertList )
{
var insert = new ImpactInsert( ImpModelPlanning.Instance )
{
Columns =
{
{ ImpModelPlanning.Factory, factory },
{ ImpModelPlanning.Project, project },
{ ImpModelPlanning.ElementId, item.Key },
{ ImpModelPlanning.ErectionSequenceNo, item.Value },
},
};
statementList.Add( insert.ToString() );
}
}
int result = database.ExecuteNonQuery( statementList.ToArray() );
return result > 0;
}
}
示例2: registrarPagosAutomaticos
public static List<CatalogoExpensas.Pagos> registrarPagosAutomaticos(DateTime periodo, List<Pagos> pagos)
{
try
{
admEntities db = new admEntities();
//Si alguien paga por automatico, queda totalmente al dia. Sumar recargos cobrados de meses anteriores o si pago en 2 vto
List<expensas> expensas = new List<expensas>();
List<Recargo> gastosExclusivos = new List<Recargo>();
List<recargos> recargos = new List<recargos>();
foreach (var p in pagos)
{
var exp = db.expensas.Where(x => x.nro_referencia == p.nroReferencia).OrderByDescending(x => x.fecha).First();
var uni = new unidad();
uni.dir_edificio = exp.dir_edificio;
uni.id_unidad = exp.id_unidad;
p.Edificio = uni.dir_edificio;
p.Unidad = uni.id_unidad;
p.Periodo = exp.fecha.Month + "/" + exp.fecha.Year;
var expensasMismaUnidad = db.expensas.Where(x => x.dir_edificio == uni.dir_edificio && x.id_unidad == uni.id_unidad && x.pagado == 0).ToList();
var exclusivosMismaUnidad = CatalogoGastosExclusivos.getAllRecargos(uni);
expensas.AddRange(expensasMismaUnidad);
gastosExclusivos.AddRange(exclusivosMismaUnidad);
}
var expGrouped = expensas.GroupBy(x => new { x.dir_edificio, x.id_unidad })
.Select(x => new expensas { dir_edificio = x.Key.dir_edificio, id_unidad = x.Key.id_unidad })
.Cast<expensas>()
.ToList();
foreach (expensas e in expensas)
{
e.pagado = 1;
db.Entry(e).State = System.Data.EntityState.Modified;
}
foreach (expensas e in expGrouped)
{
recargos r = new recargos();
var uni = new unidad();
uni.dir_edificio = e.dir_edificio;
uni.id_unidad = e.id_unidad;
r.dir_edificio = e.dir_edificio;
r.periodo = DateTime.Parse("1/" + DateTime.Now.Month + "/" + DateTime.Now.Year);
var detalles = CatalogoDeudores.getDetalleDeudaUnidad(uni);
r.importe = detalles.Sum(x => x.Recargo);
var rExistente = recargos.Where(x => x.dir_edificio == r.dir_edificio && x.periodo == r.periodo).SingleOrDefault();
if (rExistente != null)
rExistente.importe += r.importe;
else
recargos.Add(r);
}
db.SaveChanges();
foreach (var excl in gastosExclusivos)
{
switch (excl.Tipo)
{
case "Exclusivos":
CatalogoGastosExclusivos.pagarRecargoExclusivo(excl.Edificio, excl.Unidad, excl.Concepto, excl.Fecha);
break;
case "Legales":
CatalogoGastosExclusivos.pagarRecargoLegales(excl.Edificio, excl.Unidad, excl.Concepto, excl.Fecha);
break;
case "Varios":
CatalogoGastosExclusivos.pagarRecargoVarios(excl.Edificio, excl.Unidad, excl.Concepto, excl.Fecha);
break;
}
}
CatalogoRecargos.addRecargos(recargos);
return pagos;
}
catch (Exception e)
{
Logger.Log.write(e.InnerException == null ? e.Message : e.InnerException.Message);
var str = "";
str = e.InnerException?.InnerException?.Message;
Logger.Log.write("Otro error: " + str);
throw e;
}
}