嗨专家 我有一个特殊的问题关于动态Linq到Sql。 考虑我们想要根据两个字段* (LetterNo(字符串)和LetterDate(日期时间))在表中搜索</ em> * .OK问题是用户可以输入那些字段甚至两者。
我在互联网上搜索并在ScottGu weblog中找到了“Linq.Dynamic”库。但是如果我们想在导出的命令中使用SqlParameter,我们应该使用 @ 0 和 param for that.problem是我不知道用户输入了多少字段。
我想使用一个查询,而不是像“Linq Kit PredicateBuilder”这样的外部工具。
如果我手动创建我的查询字符串(并使用ExecuteCommand执行),那么我将放弃SqlParameter并增加Sql Injenction的风险。 怎么办? 感谢
答案 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);
执行查询时,它将组合必要的表达式,并根据用户的输入向数据库发出单个查询。