通用LINQ查询?

时间:2009-02-11 00:30:45

标签: c# linq

除了查询的主题和参数之外,我有几个相同的查询,我试图制定一个“通用”查询,以避免多行几乎相同的代码。

我有以下代码:

代码段

 private IEnumerable doQuery(string rangeVar,
                             DataSet dsSubTable,
                             string qrySubject,
                             string subTableKey,
                             string subTableDescription,
                             string fldName)
    {
        qryStart = dtmpickFrom.Value;
        qryEnd = dtmpickTo.Value;

        var groupQuery =
            from trans in dataSet.Transaction    
            where ((trans.T_Date >= qryStart) && (trans.T_Date <= qryEnd))
            from rangeVar in dataSet.dsSubTable  <<<<<<
                 where trans.qrySubject == rangeVar.subTableKey

            select new    ..... <snipped>

编译器不会接受带有以下消息的dsSubTable(显示为&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;

  

'ExpenditureLINQDataSets.Expenditure'不包含'dsSubTable'的定义   没有扩展方法'dsSubTable'接受'ExpenditureLINQDataSets.Expenditure'类型的第一个参数   可以找到(你错过了使用指令或汇编引用吗?)'

我当然意识到这一点(如果我尝试给dsSubTable一种支出......只有我的DataSet中定义的实际表名出现在Intellisense中。)

是否可以概括这些LINQ查询,或者我的代码中是否必须使用多个相同的查询?

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

如果您将dsSubTable作为DataTable传入,那么您可以直接在dsSubTable中使用它来实现。

但感觉就像你滥用Linq一样。 Linq的强大之处在于它不是Sql,所以你为什么要编写一个方法而不是将Sql连接在一起的字符串,你正在构建一个Linq表达式。

Linq允许您根据集合来考虑您的数据,这就是我发现的真正强大的数据。我鼓励您在调用'doQuery'并将这些查询编码为头等操作时考虑您要完成的任务。