2016-08-25 5 views
1

Существует несколько элементов в раскрывающемся списке т.е.В оператора в LINQ запрос

Apply 
Orange 
Grapes 
Factory 

я стараюсь, чтобы заполнить выпадающий с двумя Linq запросов, как этот

 if (!Page.IsPostBack) 
     { 

      if (Session["UserName"] == "admin") 
      { 
       //List<spadminlist_Result> admin = tea.spadminlist().ToList(); 

       var admin=from ad in tea.tblReg 
          .Where((x=>x.Region).Contains("Factory")) 
          .GroupBy(x=>x.Region) 
          .Select(x=> new {Region=x.Key}) 
          .ToList(); 



       regiondrop.DataSource = admin; 
       regiondrop.DataTextField = "Region"; 
       regiondrop.DataValueField = "Region"; 
       regiondrop.DataBind(); 
       Label4.Visible = false; 

      } 
      else 
      { 
       var list = tea.tblReg.AsEnumerable() 
        .Where(x => !x.Region.Any(char.IsDigit) && (x.Region != "")) 
        .GroupBy(x => x.Region) 
        .Select(x => new { Region = x.Key, Value = x.Key }) 
        .ToList(); 

       regiondrop.DataSource = list; 
       regiondrop.DataTextField = "Region"; 
       regiondrop.DataValueField = "Region"; 
       regiondrop.DataBind(); 
       Label4.Visible = false; 
      } 

     } 

теперь, когда я попробовать эту линию // Список admin = tea.spadminlist(). ToList(); then datasource show null где as sp возвращает значения, т.е. Фабрика

поэтому я решил qrite LinQ запроса поэтому после записи LinQ запроса этого

var admin=from ad in tea.tblReg 
          .Where((x=>x.Region).Contains("Factory")) 
          .GroupBy(x=>x.Region) 
          .Select(x=> new {Region=x.Key}) 
          .ToList(); 

это показывает ошибку

Error 3 Тело запроса должно заканчиваться выбором пункта или пункт группы

, а также я хочу, если роль не является администратором, тогда я не хочу отображать заводское значение, и если роль admin, то только я хочу отображать значение «Facto гу»в раскрывающемся меню так, как я использую не в операторе в 2 Linq запрос и в операторе я использую содержит оператор в 1 LINQ, но это показывает ошибку, как я выше

+0

Можете ли вы объяснить, чего вы пытаетесь достичь? –

+0

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

+0

, пожалуйста, отредактируйте имя вопроса, чтобы лучше подойти к проблеме +, если вы можете удалить комментарии от вопроса ниже - они не добавляйте полезную информацию для будущих пользователей. –

ответ

1

Синтаксис вашего Where это неправильно, и вы дону Не нужно GroupBy.

var admin = tea.tblReg.Where(x => x.Region == "Factory") 
         .Select(x => x.Region) 
         .Distinct() 
         .ToList(); 

Это будет извлекать из базы данных только записи, где Region является «Фабрика» и создал его в той же форме, как и в else


Вы также можете реорганизовать чуток свой код, чтобы уменьшить повторение (и больше еще можно сделать):

if (!Page.IsPostBack) 
{ 
    if (Session["UserName"] == "admin") 
    { 
     regiondrop.DataSource = tea.tblReg.Where(x => x.Region == "Factory") 
            .Select(x => x.Region) 
            .Distinct() 
            .ToList(); 
    } 
    else 
    { 
     regiondrop.DataSource = tea.tblReg.Where(x => x.Region.All(char.IsLetter) && 
                 x.Region != "" && 
                 x.Region != "Factory") 
              .Select(x => x.Region) 
              .Distinct() 
              .ToList(); 
    } 

    regiondrop.DataTextField = "Region"; 
    regiondrop.DataValueField = "Region"; 
    regiondrop.DataBind(); 
    Label4.Visible = false; 
} 

Заметьте также, что я изменил, использование !Any(char.IsDigit) до All(char.IsLetter) - более ясный способ сделать это

+0

это показывает ошибку в 1-м запросе linq .. Ошибка 'chart_project.tblReg' не содержит определения для 'Key' и не имеет метода расширения 'Key', принимающего первый аргумент типа 'chart_project.tblReg' может быть найден (вам не хватает директивы using или ссылки на сборку?) – user6628729

+0

и что, если я не хочу Заводское значение во втором запросе linq, как я точечный, что также – user6628729

+0

для не хочу Factory i do this ... .Where (x =>! X.Region.Any (char.IsDigit) && (x.Region! = "") && (x =>! ExceptionList.Contains ("Factory"))) , но это показывает ошибку ..Ошибка Локальная переменная с именем 'x' не может быть объявлена ​​в этой области, поскольку она придавала бы значение «x», которое уже используется в «родительской или текущей» области, чтобы обозначить что-то еще. – user6628729

 Смежные вопросы

  • Нет связанных вопросов^_^