2016-07-07 3 views
3

У меня есть проект веб-API, который использует Entity Framework. У меня есть действие api/account, которое дает идентификатор этой учетной записи.Entity Framework получить конкретный столбец из строки

Существует дополнительный параметр, который может быть предоставлен, какие поля должны быть возвращены, например. api/account?field=name

Я пытаюсь разработать лучший способ перевода из этого ввода строки в Entity Framework. Я знаю, что могу использовать .Select(), чтобы получить только определенные столбцы, но это занимает Func и единственный способ, которым я могу думать о том, чтобы получить от строки до Func, используя Reflection. Кажется, что это будет ударный удар, если я должен сделать Reflection для каждого переданного свойства, есть ли лучший способ сделать это?

Благодаря

+0

Если вам действительно нужно вернуть динамическое подмножество столбцов в API, я бы до сих пор выберите их все из БД и используйте некоторый код (возможно, только инструкции if/else) для сопоставления столбцов, которые вы хотите вернуть объекту из API. – Ryan

+0

Я только что видел ваш старый вопрос. Я бы посоветовал вам не создавать динамические запросы для заполнения выпадающих списков. Просто создайте конкретную конечную точку для каждого типа данных, которые вам нужны. AccountID/Name только для всех данных учетной записи. – Ryan

+0

@ Ryan, вот что я думал, создавая для них отдельную конечную точку. Я просто думал о том, чтобы перейти на динамический маршрут для будущей проверки, если мне нужно будет получить конкретные поля позже. – ADringer

ответ

1

Вы можете использовать эту библиотеку System.Linq.Dynamic из NuGet, и этот запрос

var selectStatement = string.Format("new ({0},{1})", field1, field2); 
var result = db.Users.Select(selectStatement).ToListAsync().Result; 
Смежные вопросы