2016-10-03 84 views
1

是否可以在LINQ查询期间后传递参数?在Linq查询上传递参数

比如这个代码:

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

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

+0

通过传递参数是什么意思?你的意思是访问一个属性? –

+0

是通过传递参数来访问属性。例如: 串strToPass = “myProperty的” 然后在LINQ查询: X => x.strToPass 这可能吗?我想在LINQ上动态查询,但我不确定哪些属性要过滤。 –

+2

这不是一个有效的语法:'x。[iwanttopassparameterhere]'。你想做什么 ? – user3185569

回答

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

如果这是Linq 2 SQL或实体框架会怎么样? – user3185569

+0

这对我来说非常合适。谢谢! –

0

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

使用铸造

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

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

objResultFinal.OrderBy(passYourParameterHere).ToList(); 
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; } 
}