2016-09-07 69 views
0

我有一个数字列表,需要按照该顺序从数据库表中选择行。 我期待实现ORDER BY FIELD()在LinQ/lambda表达式中查询没有运气EntityFramework中的MySql ORDER BY FIELD()

任何想法?

代码看起来是这样的:

using (var db = new TimeTable.EntityFramework.TimeTableEntities()) 
     { 
      List<int> list = new List<int>() { 2, 1, 4, 3 }; 
      var query = db.place_users_info.OrderBy(item => item.UniqueId); 
     } 

我需要的列表项

+0

如果不是数据的大金额,数据已被修改后才枚举并命令 – Thorarins

+0

谢谢,怎么能按列表排序数据? –

+0

你能分享你的EF查询代码吗? – Sampath

回答

0

命令行。如果你有名单,说:

var list<myobject> = <yourRepository>.<GetYourData>.ToList().OrderBy(o => o.<property>; 

之外,在内存在数据库中排序可能会更快。

如果你这样做:

var list<myobject> = <yourRepository>.<GetYourData>.OrderBy(o => o.<property>).ToList(); 

,你会通过在DB做的顺序。 (如果你的回报将IQueryable)

1

,如果你的行数并不大,也许您正在寻找这样的事情(检查ommitted):

using (var db = new TimeTable.EntityFramework.TimeTableEntities()) 
     { 
      List<int> list = new List<int>() { 2, 1, 4, 3 }; 
      var a = db.place_users_info.ToArray(); 
      var b = list.Select(x=>a[x]).ToList(); 
     } 
1

据我了解,你有(根据实例)您想要按号码列表中的号码排序的4行。

这样做使用Zip通过索引合并列表(在号码列表中的第一个项目将与在数据列表第一项等)

using (var db = new TimeTable.EntityFramework.TimeTableEntities()) 
{ 
    List<int> list = new List<int>() { 2, 1, 4, 3 }; 
    var query = db.place_users_info.Zip(list, (f,s) => new { f,s }) 
            .OrderBy(item => item.s) 
            .Select(item => item.f); 
}