C# 在IF语句中运行查询

C# 在IF语句中运行查询,c#,vb6,C#,Vb6,我正在努力学习C#,遇到了一个问题,我希望你们知道一个简单的解决办法 我想运行两个可能的LINQ查询,但从不同的位置读取,并根据IF条件返回两个不同的字段(都是id) 在VB6中,它将是简单的,如: Dim strQuery as string Dim rs as adodb.recordset If 1 = 1 then strQuery = "Select messageid as id1, refid as id1 from x where ..." else strQu

我正在努力学习C#,遇到了一个问题,我希望你们知道一个简单的解决办法

我想运行两个可能的LINQ查询,但从不同的位置读取,并根据IF条件返回两个不同的字段(都是id)

在VB6中,它将是简单的,如:

Dim strQuery as string
Dim rs as adodb.recordset

If 1 = 1 then
    strQuery = "Select messageid as id1, refid as id1 from x where ..."
else
    strQuery = "Select commonid as id1, nextid as id2 from x where ..."
endif

set rs = cn.execute(strquery)

debug.print rs!id1 & rs!id2
如何在c#中实现这一点

我试过: IQueryable fD=null

            if (1 == 1)
            {
                fD = from qa in data.table1
                        select qa;
            }
            else
            {
                fD = from qa in data.table2
                        select qa;
            }

            foreach (var a in FD)
            {
                // Unable to see any data.
            }

感谢山本哲也为我指明了正确的方向IQueryable strQuery

          foreach (**dynamic** a in strQuery)
            {
                //a.CentralContractorID
            }

dynamic是一个缺失的词,现在它可以完美地工作。

这与LINQ无关。除此之外,这在C#中应该大致相同,除了没有
End If
Dim
之外,只有一些括号定义了范围。那么您的问题到底是什么呢?LINQ在执行查询函数后返回
IQueryable
集合,因此
IQueryable strQuery
然后使用
strQuery=x.Where(…)。选择(x=>new{id1=x.commonid,id2=x.nextid})应该考虑。你在C中尝试了什么?您可能正在尝试使用LINQ到SQL吗?OP正在他的
usings
中导入
adodb.recordset
,这一事实让我认为LINQ在这里没有帮助,因为每个语句都只是作为传递给ADO连接的简单字符串创建的。因此,对于这个问题,我们所能做的就是建议使用Linq2Sql而不是ADO,并关闭这个问题,因为这太宽泛了。HimBromBeere-这个问题与VB6或ADO无关,它们是如何在VB6中完成的示例。正如我的问题所述,我希望用c#中的LINQ来实现这一点。