Как выбрать только определенные поля в Entity IQueryable в качестве SourceModel - PullRequest
1 голос
/ 22 сентября 2019

Как выбрать только определенные поля в Entity IQueryable As SourceModel

Я хочу использовать запрос, который не требует модель представления

//Model 
public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Mobile { get; set; }
    public string Email { get; set; }
}

этот запрос Только выберите Id, LastName,Мобильные другие поля, установленные по умолчанию

query => IQueryable (Entity DBSet)

//Query Result
List<Person> lstResult = query
                    .Select(x => new
                    {
                        x.Id,
                        x.LastName,
                        x.Mobile,
                    })
                    .ToList();

1 Ответ

2 голосов
/ 22 сентября 2019

Кстати, этот код зависит от ответа на ваш предыдущий вопрос.С помощью этого метода вы можете вывести только обязательные поля. Как модель

Зависит от метода расширения ParseTo

https://stackoverflow.com/a/58039799/3263653

 public static partial class GenericExtensions
{

#region SelectAsSource

    public static List<TSource> SelectAsSource<TSource, TResult>(this IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource, TResult>> selector)
    {
        return source
            .Select(selector)
            .ToList()//FetchData From Database
            .Select(x => x.ParseTo<TResult, TSource>())
            .ToList();
    }

    public static List<TSource> SelectAsSource<TSource, TResult>(this IEnumerable<TSource> source, System.Linq.Expressions.Expression<Func<TSource, TResult>> selector)
    {
        return source.ToList().SelectAsSource(selector);
    }

    public static List<TSource> SelectAsSource<TSource, TResult>(this List<TSource> source, System.Linq.Expressions.Expression<Func<TSource, TResult>> selector)
    {
        return source
            .AsQueryable()
            .Select(selector)
            .ToList()//FetchData From Database
            .Select(x => x.ParseTo<TResult, TSource>())
            .ToList();
    }

    #endregion
}

Использование =>

List<Person> lstResult = query
                    .SelectAsSource(x => new
                    {
                        x.Id,
                        x.LastName,
                        x.Mobile,
                    })
                    .ToList();
...