Комплексный запрос LINQ to Entities - PullRequest
0 голосов
/ 15 июля 2011

Возможно ли ... ??? У меня есть 4 DropDownLists на моей главной странице и Пользователь может выбрать любой, все или некоторые из DropDownLists. Я фиксирую их выбор (или не выбор) с помощью СЕССИИ переменная. То, что я хотел бы сделать, это пройти сеанс значения переменных для моего уровня доступа к данным и построить предложение WHERE (возможно, используя StringBuilder), а затем поместите эту переменную SOMEHOW в мое выражение запроса. Это возможно??? Извините, я новичок. Спасибо ~ Сьюзен ~

public class DLgetRestaurants
    {
        FVTCEntities db = new FVTCEntities();

        public List<RESTAURANT> getRestaurants(string cuisineName, string priceName, string cityName)

        [Build a string based on the values passed to the function]

        {
            var cuisineID = db.CUISINEs.First(s => s.CUISINE_NAME == cuisineName).CUISINE_ID;

            List<RESTAURANT> result = (from RESTAURANT in db.RESTAURANTs.Include("CITY").Include("CUISINE").Include("Price") 
                                       where **[USE STRINGBUIDER EXPRSSION HERE]**
                                       select RESTAURANT).ToList();


             return result;
        }
    }

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Вы можете создавать условия, которые связаны логическим и относительно простым синтаксисом метода расширения LINQ:

var query = db.RESTAURANTs.Include("CITY").Include("CUISINE").Include("Price");

if (userHasSelectedInDDL1)
    query = query.Where(r => r.PropertyForDDL1 == ValueFromDDL1);

if (userHasSelectedInDDL2)
    query = query.Where(r => r.PropertyForDDL2 == ValueFromDDL2);

if (userHasSelectedInDDL3)
    query = query.Where(r => r.PropertyForDDL3 == ValueFromDDL3);

if (userHasSelectedInDDL4)
    query = query.Where(r => r.PropertyForDDL4 == ValueFromDDL4);

List<RESTAURANT> result = query.ToList();

Для гораздо более гибкого решения для динамического создания запросов рекомендуется использовать динамическую библиотеку LINQ, рекомендованную boca.

0 голосов
/ 15 июля 2011

Я делал это в прошлом, используя Динамическую библиотеку Linq .

...