0

У меня есть этот кусок кодаПолучение значения из сессии переменной

var myList = (from p in db.Full 
       where ((p.date_reception > begin & p.date_reception < end & !p.mc_host_class.Contains("NULL")) & 
        (!strListe.Contains(p.mc_host_class))) 
       group p by p.mc_host_class into g 
       orderby g.Count() descending 
       select new 
       { 
        hostclassx = g.Key, 
        countx = g.Count() 
       }).Take(10).ToList();   

HttpContext.Current.Session["allList"] = myList; 

я хочу, чтобы получить два типа значений из моей переменной сеанса, перед использованием переменной I сеанса используется, чтобы сделать

object[] ys = myList.Select(a => (object)a.countx.ToString()).ToArray(); 
List<String> xs = new List<string>(); 

foreach (var x in myList.Select(i => i.hostclassx)) 
{ 
     xs.Add(x); 
} 

I хотите получить один и тот же тип переменных (xs и ys) из моей переменной сеанса

+1

Вы имели в виду [_logical AND_] (https://msdn.microsoft.com/en-us/library/2a723cdk.aspx) оператор '&&' вместо [_binary AND_] (https: // msdn.microsoft.com/en-us/library/sbf85k1c.aspx) operator '&'? – cubrr

ответ

0

Вы сохранили анонимный объект внутри сеанса. Анонимные объекты не предназначены для выхода из границ текущего метода. Поэтому начнем с определения модели:

public class MyModel 
{ 
    public string HostClass { get; set; } 
    public int Count { get; set; } 
} 

, а затем проецировать запрос в этот объект (имейте в виду, что вам может понадобиться, чтобы настроить тип HostClass имущества в соответствии с вашими потребностями - я определил его как строку но в вашей конкретной модели это может быть какой-то другой тип, это просто не ясно, какие типы объектов участвуют в запросах из кода, который вы вставили до сих пор):

... 
orderby g.Count() descending 
select new MyModel 
{ 
    HostClass = g.Key, 
    Count = g.Count() 
}).Take(10).ToList(); 

Хорошо, теперь у вас есть List<MyObject> хранится внутри вашего Session["allList"]. Поэтому для того, чтобы восстановить это значение где-то в вашем коде, это просто вопрос литья назад к этому же типу:

var list = (List<MyModel>)HttpContext.Current.Session["allList"]; 

И как примечание стороны вы, кажется, с помощью & оператора вместо && в вашем где предикаты, может быть, вы точно не хотели использовать это. Кажется, вы запутываете оператора logical AND и оператора binary AND.

+0

Спасибо, что сработали хорошо, но как бороться с объектом [] type –

+0

Почему вы используете слабо типизированный 'object []'? Непосредственно используйте точный тип модели. –

+0

Я использую dotnetHighcharts, для которого требуется тип объекта [] в Y ax. –

Смежные вопросы