根据多个字段使用Linq To SQL的动态查询

时间:2011-03-07 08:01:45

标签: linq linq-to-sql dynamic dynamic-data dynamic-sql

嗨专家 我有一个特殊的问题关于动态Linq到Sql。 考虑我们想要根据两个字段* (LetterNo(字符串)和LetterDate(日期时间))在表中搜索<​​/ em> * .OK问题是用户可以输入那些字段甚至两者。

我在互联网上搜索并在ScottGu weblog中找到了“Linq.Dynamic”库。但是如果我们想在导出的命令中使用SqlParameter,我们应该使用 @ 0 param for that.problem是我不知道用户输入了多少字段。

我想使用一个查询,而不是像“Linq Kit PredicateBuilder”这样的外部工具。

如果我手动创建我的查询字符串(并使用ExecuteCommand执行),那么我将放弃SqlParameter并增加Sql Injenction的风险。 怎么办? 感谢

1 个答案:

答案 0 :(得分:1)

我怀疑你想要做以下事情:

IQueryable<Letter> query = context.Letters;
if (!string.IsNullOrEmpty(LetterNo))
    query = query.Where(letter => letter.LetterNo == LetterNo);
If (LetterDate.HasValue)
    query = query.Where(letter => letter.LetterDate == LetterDate);

执行查询时,它将组合必要的表达式,并根据用户的输入向数据库发出单个查询。