Tengo algún método linq a sql y cuando lo hace la consulta devuelve un tipo anónimo.¿Cómo devolver una colección de listas genéricas en C#?
Quiero devolver ese tipo anónimo a mi capa de servicio para hacer un poco de lógica y otras cosas.
No sé cómo devolverlo.
pensé que podía hacer esto
public List<T> thisIsAtest()
{
return query;
}
pero me sale este error
Error 1 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
así que no sé lo que me falta el montaje o si eso es aún el caso.
Gracias
EDIT
Ok mi primer problema fue resuelto, pero ahora tengo un nuevo problema que no estoy seguro de cómo solucionarlo ya que no sé mucho acerca de los tipos anónimos.
me sale este error
No se puede convertir implícitamente el tipo 'System.Collections.Generic.List' a 'System.Collections.Generic.List
Ésta es la consulta
DbContext.Table.Where(u => u.Table.UserId == userId && u.OutOFF != 0)
.GroupBy(u => new { u.Table.Prefix })
.Select(group => new { prefix = group.Key,
Marks = group.Sum(item => (item.Mark * item.Weight)/item.OutOFF) })
.ToList();
Editar 2
public class ReturnValue
{
string prefix { get; set; }
decimal? Marks { get; set; }
}
public List<ReturnValue> MyTest(Guid userId)
{
try
{
var result = dbContext.Table.Where(u => u.Table.UserId == userId && u.OutOFF != 0).GroupBy(u => new { u.Table.Prefix })
.Select(group => new { prefix = group.Key, Marks = group.Sum(item => (item.Mark * item.Weight)/item.OutOFF) }).ToList();
return result;
}
catch (SqlException)
{
throw;
}
el selecto tiene esto en él
Anonymous Types:
a is new{string Prefix}
b is new{ 'a prefix, decimal? marks}
¿por qué no puede simplemente definir un nuevo tipo 'clase ReturnValue {int prefix; marcas decimales; } 'y luego devuelve un' nuevo ReturnValue (....) 'en lugar de un tipo anónimo ?? –
Voy a necesitar un ejemplo. Recibí ayuda para hacer esta consulta, hago lo que quiero, pero si se puede cambiar o agregar algo para que no sea anónimo, estoy totalmente de acuerdo. – chobo2
¡No estás usando el código que mencioné! En '.Select()', debe usar: '.Select (group => new RETURNVALUE {prefix = group.Key, ...' - esto es * NOT * lo que tiene! No agregó el ** TYPE ** se está creando en .Select(): ese es su problema –