在Linq查询上传递参数

时间:2016-10-03 09:00:41

标签: c# linq lambda

是否可以在LINQ查询后的句点之后传递参数?

例如,在此代码中:

objResultFinal = objResultFinal.OrderByDescending(x => x.[iwanttopassparameterhere]).ToList();

这可能吗?我想在“x”之后宣布。我要查询的字符串。

4 个答案:

答案 0 :(得分:1)

objResultFinal.OrderByDescending(s => s.GetType().GetProperty("PropertyName").GetValue(s, null));

答案 1 :(得分:1)

也许这可以使用动态LINQ完成,如下所示 -

objResultFinal.OrderBy(passYourParameterHere).ToList();

答案 2 :(得分:0)

您的列表是object类型的列表吗?您必须先将其投射或使用反射。

使用投射

var sortedList = objectList.Cast<Email>().OrderByDescending(item => item.EmailAddress).ToList();

答案 3 :(得分:0)

var list = new List<MyClass>();

list.Add(new MyClass { Name = "V" });
list.Add(new MyClass { Name = "B" });
list.Add(new MyClass { Name = "A" });
list.Add(new MyClass { Name = "C" });

//Create expression here, IF YOU ARE SORTING ON STRING PROPERTY KEEP KEY AS STRING OR CHANGE TO RESPECTIVE DATA TYPE
Func<MyClass,string> expression = s=>s.Name;

var ordered = list.OrderByDescending(expression).ToList();

班级对象

class MyClass
{
    public string Name { get; set; }
}