Может ли кто-нибудь помочь мне в преобразовании ниже sql
в Linq
? Как я пробовал много других способов без какого-либо успеха. Вот код
select m.Menuname
from tbl_RoleMapping r
inner join tbl_menumaster m on Convert(varchar(100),r.Menucode)=Convert(varchar,m.Menucode)
where r.role='application support' and r.productcode='GL'
order by (case when (m.Menuname like '%BookingToolStripMenuItem%' or m.menucode
like '%BookingToolStripMenuItem%')
then 0
else 1
end) asc
здесь я бы хотел, чтобы условие поиска было на первом месте, а затем на остальных.
Наконец я получил желаемый ответ с помощью Linq:
DataTable dtquery = (from c in dt.AsEnumerable()
orderby c.Field<string>("PMenu").ToLower().Contains(txtMenuName.Text.Trim().ToLower()) ,
c.Field<string>("Menu").ToLower().Contains(txtMenuName.Text.Trim().ToLower()) descending
select c).CopyToDataTable();
c.Field<string>("PMenu").ToLower().Contains(txtMenuName.Text.Trim().ToLower())
может возвращать только true
или false
. Почему бы не вычислить этот флаг в предложении SELECT ? Или использовал вычисляемый столбец DataTable?