gpt4 book ai didi

asp.net-mvc-3 - 如何在 orderby 子句中使用动态变量

转载 作者:行者123 更新时间:2023-12-02 20:10:12 27 4
gpt4 key购买 nike

我是 linq 的新手..我陷入了一种情况。即,

我必须根据用户输入对搜索结果进行排序。

用户输入的是姓氏、名字和头衔。对于输入 3,有下拉菜单,我必须根据所选值对结果进行排序。

我试过了

order = Request["orders"].Split(',');

var param = order[0];
var p1 = typeof(Test).GetProperty(param);
param = order[1];
var p2 = typeof(Test).GetProperty(param);
param = order[2];
var p3 = typeof(Test).GetProperty(param);


model.Test = (from tests in model.Test
select tests).
OrderBy(x => p1.GetValue(x, null)).
ThenBy(x => p2.GetValue(x, null)).
ThenBy(x => p3.GetValue(x, null));

但它不起作用。

我想要这样的qry

from tests in  model.Test
select tests).OrderBy(x => x.lastname).
ThenBy(x => x.firstname).ThenBy(x => x.Title);

order[0]== lastname but how can i use it in the place of OrderBy(x => x.order[0])..?

提前致谢。

最佳答案

我按照如下方式解决了我的问题//用于排序的列列表

 List<string>order = Request["orders"].Split(',').ToList();

//将列字符串映射到属性

var mapp = new Dictionary<string, Func<Test, string>>
{
{"FirstName", x => x.FirstName},
{"LastName", x => x.LastName},
{"SimpleTitle", x => x.SimpleTitle}

};

//用户输入的订单

var paras = new List<Func<Test, string>>();
foreach (var para in order)
{
if(!string.IsNullOrEmpty(para))
paras.Add(mapp[para]);
}

//sorting
model.Test= model.Test.OrderBy(paras[0]).ThenBy(paras[1]).ThenBy(paras[2]);

谢谢大家,

关于asp.net-mvc-3 - 如何在 orderby 子句中使用动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14332614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com