![](/img/trans.png)
[英]Convert Expression<Func<T, object>> to Expression<Func<object>>
[英]Howto convert Expression Func<T, object[]> to Func<T, object>
我有一個需要在linq查詢中選擇的字段數組。
這些字段的格式為Expression<Func<T, object[]>>
。 (字段數組)
(我無法改變這一點,字段的順序對其他代碼很重要)
我需要將它轉換為我可以在IQueryable<T>
使用的選擇器。 但是我該怎么做呢? 如何實現GetSelector()函數?
var fields = GetFields<Employee>(e => new[] { e.Name, e.Street });
var selector = GetSelector(fields);
var result = await qry.Select(selector).ToListAsync();
GetFields功能:
private Expression<Func<T, object[]>> GetFields<T>(Expression<Func<T, object[]>> fields)
{
return fields;
}
GetSelector功能:
private Expression<Func<T, object>> GetSelector<T>(Expression<Func<T, object[]>> fields)
{
//How to convert?
//It should return somehting like this: (e => new {e.Name, e.Street})
}
我不太確定IQueryable
部分(請測試它),但更改表達式簽名非常簡單,因為object[]
是一個object
private static Expression<Func<T, object>> GetSelector<T>(Expression<Func<T, object[]>> fields)
{
var result = Expression.Lambda<Func<T, object>>(fields.Body, fields.Parameters);
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.