EntityFramework中的MySql ORDER BY FIELD()

时间:2016-09-07 06:06:42

标签: c# mysql .net entity-framework linq

我有一个数字列表,需要按顺序从DB表中选择行。 我希望在LinQ / lambda表达式中实现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);
        }

我需要按列表项

排序

3 个答案:

答案 0 :(得分:1)

如果你的行数不是那么大,也许你正在寻找这样的东西(检查省略):

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 :(得分: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); 
}

答案 2 :(得分:0)

如果您有列表,请说:

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

此外,在内存中,顺序可能比在DB中更快。

如果你愿意:

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

您可以在数据库中执行订单。 (如果您返回IQueryable)