dans ce code ci-dessous
string cluase = string.Empty;
string whereValue = string.Empty;
foreach (var i in whereCluaseItems)
{
if (cluase != "")
{
cluase += " and " + i.Name;
}
else
{
cluase = i.Name;
}
if (whereValue != "")
{
whereValue += "," + i.Value;
}
else
{
whereValue = i.Value;
}
}
var result = context.vCatalogItemsDetails
.Where(cluase, whereValue)
// since where syntax has to be like this : where("@landuageID=@0,categoryid=@1", 1,1)
.OrderBy("itemID")
.Skip((pageN - 1) * 10).Take(10);
cluase est une chaîne et contient "languageId=@0, categoryid=@1"
oùValeur est également une chaîne et contient "1,1"
j'ai besoin de supprimer ces guillemets. Comment puis-je le faire?
Pour ce type de clause where "dynamique", il n'est souvent pas nécessaire d'utiliser des fonctionnalités basées sur l'expression. Vous devez juste réaliser que plusieurs appels Where
peuvent être composés.
Par exemple:
public static IEnumerable<Person> Filter(this IEnumerable<Person> source,
string firstname, string lastname)
{
if (firstname != null)
{
source = from person in source
where person.Firstname.Contains(firstname)
select person;
}
if (lastname != null)
{
source = from person in source
where person.Lastname.Contains(lastname)
select person;
}
return source;
}
La même technique fonctionne également avec IQueryable<T>
.