2011-03-07 49 views
0

嗨,专家 我有一个关于动态Linq to Sql的特殊问题。 考虑我们要根据两个字段* (LetterNo(字符串)和LetterDate(日期时间)) * 在表中进行搜索。问题是用户可以输入该字段或甚至两者。动态查询使用Linq To SQL根据多个字段

我搜索在互联网上,发现ScottGu“Linq.Dynamic”库该库weblog.but如果我们要使用的SqlParameter在导出的命令,我们应该使用@ 0PARAM为that.problem是我不知道用户输入了多少个字段。

我想要使用一个查询,并且没有像“Linq Kit PredicateBuilder”这样的外部工具。

如果我手动创建我的查询字符串(并执行使用ExecuteCommand),那么我会放弃SqlParameter和Sql Injenction成长的风险。 如何做到这一点? 感谢

+0

你可以重构你的问题的可读性?这只是一个大段落。还要补充你已经有的那些不起作用的东西。 – 2011-03-07 10:45:29

回答

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); 

当您执行查询时,它会结合必要的表情并发出一个查询,以基于用户的输入数据库。