В моем операторе "выбора" я должен добавить два динамических параметра при использовании набора WhereParameters LinqDataSource:
e.WhereParameters.Add(param, True)
Однако система добавляет эти параметры как AND
, но я хочу выполнить OR
где также parameter 1
ИЛИ parameter 2
верно.
Как это может быть сделано?
Если вы не знаете количество параметров во время проектирования и можете определить их только во время выполнения, подумайте об изменении свойства Where
источника данных во время выполнения. Вы можете вставить фактические значения самостоятельно.
//e.g. we know that we want 4 params this time.
LinqDataSource1.Where =
"Alpha == 1 OR Brave==False OR Charlie> 'Jan 1 1999' or Delta = @DeltaVal";
LinqDataSource1.WhereParameters.Add("DeltaVal", "O'Flanagan");
Если вы знаете n параметров во время выполнения, вы можете просто поставить оператор OR во время проектирования и изменить их значения.
Возможно, поместить ваше OR
предложение прямо в объявление LinqDataSource.
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
Where="Foo == @FooValue OR Bar==@BarValue">
Затем в code-behind можно добавить эти два параметра where
.
LinqDataSource1.WhereParameters.Add("FooValue", "milk");
LinqDataSource1.WhereParameters.Add("BarValue", "eggs");
Вы можете использовать PredicateBuilder Джо Албахари. Я использовал его с большим успехом.