Dapper.net 动态或查询
Dapper.net dynamic OR query
刚开始使用 Dapper,需要一点帮助。我有一个 .csv 文件,我将读取该文件以动态生成 select 语句。
.csv 文件内容如下所示:
id,fromDate,toDate
1,20100101,20110101
2,20110101,20120101
3,20100101,20120101
etc...
我需要动态生成的查询应该是:
SELECT * FROM targetTable WHERE (id = 1 AND cDate BETWEEN 20100101 AND 20110101) OR (id = 2 AND cDate BETWEEN 20110101 AND 20120101) OR
OR (id = 3 AND cDate BETWEEN 20100101 AND 20120101)
如何使用 Dapper 执行此操作?
为什么不直接构建查询?
假设您在读取 csv 并将其推送到 类 后拥有此表单中的所有数据:
public class Data
{
public int ID { get; set; }
public int FromDate { get; set; }
public int ToDate { get; set; }
}
我只是简单地传递查询字符串:
List<string> lines = new List<string>();
foreach (var data in listData) // listData ... List<Data>
{
string line = string.Format("(id = {0} and cdate between {1} and {2})", data.ID,data.FromDate, data.ToDate);
lines.Add(line);
}
string additionalQuery = string.Join(" OR ", myLines);
然后...
var result = sqlConnection.Query<MyQueryData>(string.Format("SELECT * FROM targetTable WHERE {0}", additionalQuery));
会很好用...
刚开始使用 Dapper,需要一点帮助。我有一个 .csv 文件,我将读取该文件以动态生成 select 语句。
.csv 文件内容如下所示:
id,fromDate,toDate
1,20100101,20110101
2,20110101,20120101
3,20100101,20120101
etc...
我需要动态生成的查询应该是:
SELECT * FROM targetTable WHERE (id = 1 AND cDate BETWEEN 20100101 AND 20110101) OR (id = 2 AND cDate BETWEEN 20110101 AND 20120101) OR
OR (id = 3 AND cDate BETWEEN 20100101 AND 20120101)
如何使用 Dapper 执行此操作?
为什么不直接构建查询?
假设您在读取 csv 并将其推送到 类 后拥有此表单中的所有数据:
public class Data
{
public int ID { get; set; }
public int FromDate { get; set; }
public int ToDate { get; set; }
}
我只是简单地传递查询字符串:
List<string> lines = new List<string>();
foreach (var data in listData) // listData ... List<Data>
{
string line = string.Format("(id = {0} and cdate between {1} and {2})", data.ID,data.FromDate, data.ToDate);
lines.Add(line);
}
string additionalQuery = string.Join(" OR ", myLines);
然后...
var result = sqlConnection.Query<MyQueryData>(string.Format("SELECT * FROM targetTable WHERE {0}", additionalQuery));
会很好用...