我有一个数字列表,需要按顺序从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);
}
我需要按列表项
排序答案 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)