2010-08-23 57 views
0

我使用LINQ到实体和我在这里是我的查询如何使用参数值作为要在LINQ查询中选择的属性?

public void SomeFunction(string searchField) 
{ 
var data = from a in dx.SomeTable where   
       a.SomeProperty="270" 
       select a; 
. 
. 
. 

} 

现在,如果我不得不使用参数“searchField”的价值属性的where子句中被选中,那么我该怎么办做它?

即我想将参数“searchField”的值分配给我在where子句中检查的属性。

因此... a.SomeProperty中的“SomeProperty”的值必须是“searchField”的值。这个怎么做 ?

PS:

我不想要a.SomeProperty = searchField。

我要的是“SomeProperty”自己被“searchField”的值替换,然后,这个必须检查,看看它等于270

+0

在调用'SomeFunction'的代码中,你知道'a'的类型,还是只知道它是一个名为'SomeProperty'的属性? – AakashM 2010-08-23 10:01:53

+0

嗨, 该函数只涉及一个名为“SomeTable”,我可以访问使用datacontext“dx” 我知道该表有许多属性(有效的列),并且“someField”值将是其中一列的名称。这是问题所在。 – Sandeep 2010-08-23 11:07:24

回答

0

如果来电者知道您a的类型(让我们说这是MyType),我建议你不需要动态LINQ - 你可以传递一个谓词函数:

public void SomeFunction(Func<MyType, bool> selector) 
{ 
    // ... 
    var data = from a in dx.SomeTable 
       where selector(a) 
       select a; 
} 

// Calling code 
SomeFunction(a => a.SomeProperty == "270"); 

或者,如果你想保持内SomeFunction270值,传递一个投影功能拔出SomeProperty

public void SomeFunction(Func<MyType, string> propertyExtractor) 
{ 
    // ... 
    var data = from a in dx.SomeTable 
       where propertyExtractor(a) == "270" 
       select a; 
} 

// Calling code 
SomeFunction(a => a.SomeProperty); 

(道歉,如果这不能编译,我目前从编译器的距离)

+0

谢谢Aakash我会尽力检查一下:) – Sandeep 2010-08-24 05:15:06

相关问题