【问题标题】:Dynamic Query using Linq To SQL According Multiple Fields使用 Linq To SQL 根据多个字段进行动态查询
【发布时间】:2011-07-10 04:32:17
【问题描述】:

嗨专家 我有一个关于动态 Linq to Sql 的特殊问题。 考虑我们要根据两个字段在表中搜索*(LetterNo(string) 和 LetterDate(Datetime))* .OK 问题是用户可以输入这些字段,甚至两者都输入。

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

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

如果我手动创建查询字符串(并使用 ExecuteCommand 执行),那么我将放弃 SqlParameter 和 Sql Injenction 成长的风险。 怎么能这样做? 谢谢

【问题讨论】:

  • 您能否重新组织您的问题以提高可读性?这只是一大段。还要添加你已经拥有但不起作用的东西。

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


【解决方案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);

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

【讨论】:

    猜你喜欢
    • 2012-12-21
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多