मैं जानता हूँ कि यह एक पुरानी धागा है, लेकिन यहाँ एक और तरीका यह करने के लिए है की तरह उपयोग कर सकते हैं। यदि आपको लूप में ऐसा करने की ज़रूरत है तो इसका काफी तेज़ होने का लाभ है। मैंने इसे "func" के परिणाम को थोड़ा अधिक सामान्य उद्देश्य बनाने के लिए ऑब्जेक्ट करने के लिए परिवर्तित कर दिया है।
var p = Expression.Parameter(typeof(string));
var prop = Expression.Property(p, "Length");
var con = Expression.Convert(prop, typeof(object));
var exp = Expression.Lambda(con, p);
var func = (Func<string, object>)exp.Compile();
var obj = "ABC";
int len = (int)func(obj);
मूल प्रश्न में कोड लिनक के अंदर इस्तेमाल किया जा रहा था, इसलिए गति अच्छी हो सकती है।अगर यह सही ढंग से बनाया गया था, तो सीधे "func" का उपयोग करना संभव होगा, उदाहरण के लिए
class ABC
{
public string Name { get; set; }
}
var p = Expression.Parameter(typeof(ABC));
var prop = Expression.Property(p, "Name");
var body = Expression.Equal(prop, Expression.Constant("Bob"));
var exp = Expression.Lambda(body, p);
var func = (Func<ABC, bool>)exp.Compile();
ABC[] items = "Fred,Bob,Mary,Jane,Bob".Split(',').Select(s => new ABC() { Name = s }).ToArray();
ABC[] bobs = items.Where(func).ToArray();
इसे प्यार किया! धन्यवाद। – Dementic