Вы должны использовать flexbox.
вам нужно будет обернуть ваши div в другую ширину div the class = "container"
, тогда вы можете сделать это
.container {
display: flex; /* display side by side */
align-items: center; /* align vertically */
}
.container > * {
flex: 1;
}
@Geoff имеет наилучший вариант, выгоняя Динамический LINQ.
Если бы Вы хотите пойти путем создать запросы во времени выполнения с помощью Лямбды, хотя я повторно прокомментировал бы, что Вы используете PredicateBuilder (http://www.albahari.com/nutshell/predicatebuilder.aspx) и имеете что-то, такое как это:
Expression<Fun<T,bool>> pred = null; //delcare the predicate to start with. Note - I don't know your type so I just used T
if(blacklistFirstName){
pred = p => p.ContactFirstName.Contains("Blacklisted");
}
if(blacklistLastName){
if(pred == null){
pred = p => p.ContactLastName.Contains("Blacklisted"); //if it doesn't exist just assign it
}else{
pred = pred.And(p => p.ContactLastName.Contains("Blacklisted"); //otherwise we add it as an And clause
}
}
И так далее для всех столбцов Вы хотите включать. Когда Вы добираетесь до своего запроса, Вам просто нужно что-то вроде этого:
var results = db.Customers.Where(pred).Select(c => c);
Я использовал это, чтобы сделать здание LINQ для поиска, где существует приблизительно 20 различных вариантов, и это производит действительно хороший SQL.
var query = from C in db.Customers select c;
if (seachFirstName)
query = query.Where(c=>c.ContactFirstname.Contains("Blacklisted"));
if (seachLastName)
query = query.Where(c=>c.ContactLastname.Contains("Blacklisted"));
if (seachAddress)
query = query.Where(c=>c.Address.Contains("Blacklisted"));
Обратите внимание, что они не являются взаимоисключающими.
Так как это не LINQ к Объектам, а скорее LINQ к SQL, у Вас нет никакой другой альтернативы около использования или Выражения или хранимая процедура.