我想让课程动态化。当有人调用此函数时,我不知道参数和比较运算符的总数(例如,等于,等等)和字段名称。我怎样才能实现这一点?
在这个例子中,我使用了三个参数。 “PartitionKey”,“RowKey”和tableName.It可以是0或任何数字,也可以是“FirtName”,“Age”等
public void Persons(string whereClauseParameters)
{
var query = (from p in cloudTable.CreateQuery<CustomTableEntity>()
where p.PartitionKey == "" && p.RowKey != "" && p.TableName == ""
select p);
}
答案 0 :(得分:0)
听起来你正在寻找像Dynamic Linq这样的东西。这允许您执行以下查询:
var query = northwind.Products
.Where("CategoryID = 3 AND UnitPrice > 3")
.OrderBy("SupplierID");
其中字段可以指定为动态字符串,而不是&#39;硬编码&#39;。
答案 1 :(得分:0)
这样的东西?
public void Persons(Predicate<Person> pred)
{
var query = from p in cloudTable.CreateQuery<CustomTableEntity>()
where pred(p)
select p;
}
答案 2 :(得分:0)
您可以动态地向查询添加条件。例如:
public void Persons(string firstName, string lastName, int? age) {
var query = loudTable.CreateQuery<CustomTableEntity>();
if (firstName != null) {
query = query.Where(p => p.FirstName == firstName);
}
if (lastName != null) {
query = query.Where(p => p.LastName == lastName);
}
if (age.HasValue) {
query = query.Where(p => p.Age == age.Value);
}
// then use the query
}