Ho qualche metodo da linq a sql e quando fa la query restituisce un tipo anonimo.Come restituire una raccolta di elenchi generica in C#?
Voglio restituire quel tipo anonimo al mio livello di servizio per fare un po 'di logica e cose su di esso.
Non so come restituirlo però.
ho pensato che avrei potuto fare questo
public List<T> thisIsAtest()
{
return query;
}
ma ottengo questo errore
Error 1 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
quindi non so cosa assemblaggio che mi manca o se questo è anche il caso.
Grazie
EDIT
Ok il mio primo problema è stato risolto, ma ora ho un nuovo problema che io non sono sicuro di come risolvere dato che non so molto di tipi anonimi.
ottengo questo errore
Impossibile convertire implicitamente il tipo 'System.Collections.Generic.List' a 'System.Collections.Generic.List
Ecco la query
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();
Modifica 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;
}
select ha questo in esso
Anonymous Types:
a is new{string Prefix}
b is new{ 'a prefix, decimal? marks}
perché non puoi semplicemente definire un nuovo tipo 'class ReturnValue {int prefix; segni decimali; } 'e quindi restituisce un' nuovo ReturnValue (....) 'invece di un tipo anonimo ?? –
Avrò bisogno di un esempio. Ho aiutato a fare questa domanda, fa quello che voglio, ma se può essere cambiato o aggiunto qualcosa per renderlo non anonimo, sono tutto per quello. – chobo2
Non stai usando il codice che ho menzionato! In '.Select()', devi usare: '.Select (group => new RETURNVALUE {prefix = group.Key, ...' - questo è * NON * quello che hai! Non hai aggiunto il ** TYPE ** in fase di creazione in .Select() - questo è il tuo problema –