2014-01-31 3 views
0

Я пытаюсь добавить предложение where к существующему LINQ DataBind, но ничего не работает. Где положение я хочу добавить проверку, если в таблице refAuthSigner столбец IsActive == 1.где предложение в LINQ to Entites DataBind

Вот мой существующий запрос:

// populates Authorized Signer dropdownlist 
     using (dbPSREntities10 myEntities = new dbPSREntities10()) 
     { 
      var allSigners = from refAuthSigner in myEntities.refAuthSigners <--- where clause somewhere around here?? 
          select new 
          { 
           refAuthSignerID = refAuthSigner.refAuthSignerID, 
           refAuthSignerName = refAuthSigner.refAuthSignerFirst + " " + refAuthSigner.refAuthSignerLast 
          }; 
      ddlAuthSigners.DataSource = allSigners; 
      ddlAuthSigners.DataValueField = "refAuthSignerID"; 
      ddlAuthSigners.DataTextField = "refAuthSignerName"; 
      ddlAuthSigners.DataBind(); 
     } 

Я хочу добавить, где положение, которое является чем-то вроде:

var allSigners = from refAuthSigner in myEntities.refAuthSigners 
    where refAuthSigner.IsActive == 1 

Этот код является неправильным и просто интересно, как бы я включил предложение where в код. Благодаря!

+1

И какая проблема у вас есть, когда вы добавляете это предложение 'where'? – Servy

+0

Оператор '==' не может применяться к операндам типа 'bool' и 'int'. IsActive - это бит типа в SqlServer – user1431633

+0

Пожалуйста, отредактируйте вопрос, чтобы включить эту информацию. – Servy

ответ

0

Попробуйте это:

var allSigners = from refAuthSigner in myEntities.refAuthSigners 
       where refAuthSigner.IsActive 
       select new 
       { 
        refAuthSignerID = refAuthSigner.refAuthSignerID, 
        refAuthSignerName = refAuthSigner.refAuthSignerFirst + " " + refAuthSigner.refAuthSignerLast 
       }; 
-1
// populates Authorized Signer dropdownlist 
     using (dbPSREntities10 myEntities = new dbPSREntities10()) 
     { 
      var allSigners = from refAuthSigner in myEntities.refAuthSigners 
          where refAuthSigner.IsActive 
          select new 
          { 
           refAuthSignerID = refAuthSigner.refAuthSignerID, 
           refAuthSignerName = refAuthSigner.refAuthSignerFirst + " " + refAuthSigner.refAuthSignerLast 
          }; 
      ddlAuthSigners.DataSource = allSigners; 
      ddlAuthSigners.DataValueField = "refAuthSignerID"; 
      ddlAuthSigners.DataTextField = "refAuthSignerName"; 
      ddlAuthSigners.DataBind(); 
     } 
+0

Отредактировано для исправления ошибки копирования. –

2

Просто используйте:

where refAuthSigner.IsActive 

Поскольку это логическое значение, которое вы не можете сравнить это целое число. Это true или false, а не 1 или 0. (Некоторые langauges conflate the two, C# не является одним из них.)

Нет необходимости сравнивать IsActive со всем. where нуждается в логическом значении, а IsActive - это логическое значение. У вас уже есть то, что вам нужно.

1

Вы могли бы сделать заявление:

var allsigners = refAuthSigner.Where(x => x.refAuthSigner.IsActive) 
0

Operator of '==' cannot be applied to operands of type 'bool' and 'int'. IsActive is type bit in SqlServer

Если это ошибка, вы получаете попробовать с помощью Any вместо Where как он возвращает BOOL

+0

Тогда он не будет фильтровать результаты, что он хочет, он просто получит логическое значение, чего не хочет. – Servy

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