public static IEnumerable SelectFields(this IQueryable query, List fields)
{
return query.ToList().Select(item =>
{
IDictionary expando = new ExpandoObject();
var props = typeof(T).GetProperties();
foreach (var prop in props)
{
if (fields.Contains(prop.Name, StringComparer.OrdinalIgnoreCase))
{
expando[prop.Name] = prop.GetValue(item);
}
}
return (ExpandoObject)expando;
});
}
}
Что произойдет при создании привязки, если одно из указанных полей в строке полей не существует для типа T? Как с этим справиться?
Похоже, что метод GetTypeBuilder определяет новый тип в динамически создаваемой сборке. Необходимо ли это и есть ли лучший подход для динамического выбора полей из IQueryable?
[code] public static IEnumerable SelectFields(this IQueryable query, List fields) { return query.ToList().Select(item => { IDictionary expando = new ExpandoObject(); var props = typeof(T).GetProperties();
foreach (var prop in props) { if (fields.Contains(prop.Name, StringComparer.OrdinalIgnoreCase)) { expando[prop.Name] = prop.GetValue(item); } }
return (ExpandoObject)expando; }); } } [/code]
Что произойдет при создании привязки, если одно из указанных полей в строке полей не существует для типа T? Как с этим справиться? Похоже, что метод GetTypeBuilder определяет новый тип в динамически создаваемой сборке. Необходимо ли это и есть ли лучший подход для динамического выбора полей из IQueryable?