2016-10-03 128 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; } 
}