Все еще действительно борются с этим и, кажется, кружатся по кругу.Dynamic LINQ Multiple Where Section
У меня есть следующий код, который меня заводит. Он должен заполнить список элементов, которые будут использоваться в текстовом поле автозаполнения:
public string[] GetAutoComplete(string prefixText, int count)
{
string memberid = HttpContext.Current.Session["MemberID"].ToString();
string locationid = HttpContext.Current.Session["LocationID"].ToString();
string inhouse = HttpContext.Current.Session["Inhouse"].ToString();
string supplier = HttpContext.Current.Session["Supplier"].ToString();
string groupw = HttpContext.Current.Session["Group"].ToString();
string external = HttpContext.Current.Session["External"].ToString();
MyEnts autocomplete = new MyEnts();
var r = from p in autocomplete.tblAutoCompletes
where p.MemberId == memberid && p.LocationId == locationid && p.ACItem.Contains(prefixText)
select p.ACItem;
if (inhouse == "Inhouse")
r = r.Where(p => p == inhouse);
if (supplier == "Supplier")
r = r.Where(p => p == supplier);
if (groupw == "Group")
r = r.Where(p => p == groupw);
if (external == "External")
r = r.Where(p => p == external);
r.OrderBy(p => p);
return r.ToArray();
То, что я пытаюсь получить с динамическим, где положение вдоль линий ниже.
Должно ли inhouse = "Inhouse", тогда в список предметов должно входить слово "Inhouse". Если inhouse! = «Inhouse», слово «Inhouse» должно быть исключено из списка.
Эта же логика должна быть применена в разных случаях, где пункты, то есть поставщик, группа, внешний.
Я искренне пробовал много разных методов, но я не могу для жизни меня получить вещь, чтобы работать, и это несколько разочаровывает меня.
Если кто-нибудь может предложить способ сделать это, вы либо получите большой поцелуй, либо большое морозное пиво, если наши пути когда-либо пересекут.
Я не понимаю вашу цель здесь, если 'ACItem' содержит префиксный текст, то наверняка вам понадобятся все записи, которые это делают. Во-вторых, из вашего кода можно предположить, что ACItem - это строка, возвращаемая с вашего объекта, поэтому последующие сравнения будут терпеть неудачу, если ACItem не будет «Inhouse», «Поставщик», «Группа» или «Внешний». По сути, вы создаете рутину для автоматического завершения для 4 слов. Является ли ACItem, как я подозреваю, более сложным, чем просто строка? – Lazarus
Помимо всего прочего, ваш заказ ничего не делает - вам нужно 'r = r.OrderBy (p => p);' –
Привет, Лазарь (хорошо сделано, вернувшись из мертвых, кстати, вернусь). ACItem - это столбец, содержащий список возвращаемых элементов автозаполнения. Мой сценарий включает в себя настройки пользователя (через сеансы), в результате чего я могу ограничить доступ к пользователю. Поэтому, если им не разрешено видеть Inhouse, список автозаполнения не отображает эти элементы. Если это невозможно, или очень сложно для такого простака, как я, я мог бы просто оставить их в списке и поместить некоторые проверки после того, как они выбрали элемент. –