2016-02-11 3 views
-1

Как бы я получить тот же результат в LINQ в ASP.Net следующим SQL запросов являются нижеCase и IIF в LINQ

в случае

select *, case 
     when 
      gender = 1 then 'Male' else 'Female' end 
     as gen from info 

и IIF

select iif(gender = 1, 'Male', 'Female') as gen, * from info 

Я попытался после получения предложения, но не указана

InfoDataContext db = new InfoDataContext(); 

      var data = from y in db.infos 
         db.infos.Select(i => new info{info = i, i.gender == 1 ? "Male" : "Female"}).ToList() 
         select y; 

      GridView1.DataSource = data; 
      GridView1.DataBind(); 

еще одно: первый запрос возвращает новый результат как последний столбец в таблице, а второй запрос - как первый столбец в таблице. Как переставить или заменить gen колонки с gender колонком

+1

Ваш LINQ - это полный беспорядок, из-за которого возникает ошибка. – mybirthname

+0

Ваш конечный результат должен быть: 'var data = db.infos.Select (i => new {info = i, i.gender == 1?" Male ":" Female "}). ToList()' – Manoj

+0

все еще ошибка существует. ** объявлен недопустимый анонимный член типа ** – Mangrio

ответ

7

Просто используйте тройной оператор:

var data = context.info.Select(i => new {info = i, gender = i.gender == 1 ? "Male" : "Female"}).ToList(); 
+0

'InfoDataContext db = new InfoDataContext(); var data = from y in db.infos db.infos.Select (i => new info {info = i, i.gender == 1? "Male": "Female"}). ToList() select у; GridView1.DataSource = данные; GridView1.DataBind(); ' – Mangrio

+0

это ошибка: – Mangrio

+0

@QadeerMangrio ваш синтаксис неверен, удалите' new info {'и замените его просто' new {info = i .... '} – Ric

0

я сделал с вами предложением.

InfoDataContext db = new InfoDataContext(); 
      var dat = db.infos.Select(i => new {info = i,i.id, i.name, Gen= i.gender == true ? "Male" : "Female", i.city}); 
      GridView1.DataSource = dat; 
      GridView1.DataBind();