当前位置:编程学习 > C#/ASP.NET >>

sql 转Linq 求救

select id,name 
from table 
order by case when id like 'shanghai%' then 0 when id like 'beijing%' then 1 else 2 end 
这条sql 能转化成Linq吗  SQL LINQ --------------------编程问答-------------------- select id,name 
from table 
order by case when id like 'shanghai%' then 0 when id like 'beijing%' then 1 else 2 end 
试试如下
var query = db.table.OrderBy(t => new
    {
        t.id.Contains("shanghai")?0: t.id.Contains("beijing")?1:2    
    }).Select(x=>new {x.id,x.name});

            --------------------编程问答--------------------
引用 1 楼 Chinajiyong 的回复:
select id,name 
from table 
order by case when id like 'shanghai%' then 0 when id like 'beijing%' then 1 else 2 end 
试试如下
var query = db.table.OrderBy(t => new
    {
        t.id.Contains("shanghai")?0: t.id.Contains("beijing")?1:2    
    }).Select(x=>new {x.id,x.name});

           


差不多就是这样,稍微修改下,不是Contains而是StartsWith --------------------编程问答-------------------- 提示 这个问题 无效的匿名类型成员声明符 --------------------编程问答--------------------

var query = db.table.OrderBy(t => new
    {
        t.id.Contains("shanghai")?0: t.id.Contains("beijing")?1:2    
    }).Select(x=>new {ID=x.id,Name=x.name});
--------------------编程问答--------------------
引用 3 楼 u011561284 的回复:
提示 这个问题 无效的匿名类型成员声明符

项目选择 .netframework4.0或以上版本 --------------------编程问答--------------------  var result1 = from item in study.Customer
                          orderby item.ContactName.Contains("j") ? 0 : item.Country.Contains("t") ? 1 : 2 descending
                         // orderby item.CustomerID  descending
                         select new { item.CustomerID, item.Country, item.ContactName };

            var result = study.Customer.OrderByDescending(n =>n.ContactName.Contains("j")?1:n.ContactName.Contains("T")?2:3).Select(n => new { n.CustomerID, n.Country, n.ContactName });
            foreach(var singel in result1)
            {
                Console.WriteLine(singel);
            }
问题和你差不多,用linq和lambda两种方法 --------------------编程问答--------------------
var query=from t in table
          orderby t.id.StartWith("shanghai")?0:t.id.StartWith("beijing")?1:2
          select new {t.id,t.name};
--------------------编程问答--------------------
引用 7 楼 q107770540 的回复:
var query=from t in table
          orderby t.id.StartWith("shanghai")?0:t.id.StartWith("beijing")?1:2
          select new {t.id,t.name};



这个用的是StartWith  前面几个用的是 Contains
补充:.NET技术 ,  LINQ
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,