我需要使用包含源和目标的表达式来获取选择器,比如mapper(我需要它用于EF)。
public class Region
{
public int RegionId { get; set; }
public string RegionName { get; set; }
}
var country = new List<Region> { new Region { RegionId = 21, RegionName = "MyRegion" } };
Expression<Func<Region, string>> exp = (x => x.RegionName);
country.Select(s => exp(s));
// exp(s) gives compilation error (Method name expected)
有可能得到它吗?
答案 0 :(得分:0)
想象一下:
var items = new List<int>();
Expression<Func<int, int>> selector = (x => x);
您无法执行此操作,因为它是Expression
:
selector(x); // will not work
但这样可行,因为您正在编译表达式,所以现在可以调用Func<int, int>
:
selector.Compile()(1);
如果你想在IQueryable
中使用表达式,你可以这样做:
items.AsQueryable().Select(x => selector);
// Or simply
items.AsQueryable().Select(selector);
所以在你的情况下,它应该是:
country.Select(exp);