в пункте в linq - PullRequest
       1

в пункте в linq

0 голосов
/ 19 мая 2011
protected void lstGroup_SelectedIndexChanged(object sender, EventArgs e)
{
    string selectedValues=string.Empty;
    foreach (ListItem li in lstGroup.Items)
    {
        if (li.Selected == true)
        {
            selectedValues += li.Value+",";
        }

    }
    selectedValues = selectedValues.Trim(',');
    var accessright = (from ug in Db.VCT_USER_GROUPs
                       where ug.GROUP_ID in(selectedvalues)
                       select new
                                  {
                                      ug.GROUP_ID,
                                      ug.GROUP_NAME
                                  }).ToList();
    if (true)
    {
        dlGroup.DataSource = accessright;
        dlGroup.DataBind();
    }
}

Выше мой код.В переменной selectedValues ​​у меня есть такие значения, как 1,2,3, и я хочу использовать в выражении в linq, например, где ug.GROUP_ID в (selectedvalues).но это дает мне ошибку. как это сделать

Ответы [ 2 ]

0 голосов
/ 19 мая 2011
 (from ug in Db.VCT_USER_GROUPs
  where selectedvalues.Any(selectedeVal => selectedeVal == ug.GROUP_ID)
  select new
  {
     ug.GROUP_ID,
     ug.GROUP_NAME
  }).ToList();
0 голосов
/ 19 мая 2011

Вы должны изменить порядок и использовать .Contains():

var accessright = (from ug in Db.VCT_USER_GROUPs
                    where selectedvalues.Contains(ug.GROUP_ID)
                    select new
                               {
                                   ug.GROUP_ID,
                                   ug.GROUP_NAME
                               }).ToList(); 

Обратите внимание, что selectedvalues используется как перечисляемая, а не как конкатенированная строка:

var selectedvalues = lstGroups.Items.Where(i => i.Selected).Select(i => i.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...