C# 在IF语句中运行查询
我正在努力学习C#,遇到了一个问题,我希望你们知道一个简单的解决办法 我想运行两个可能的LINQ查询,但从不同的位置读取,并根据IF条件返回两个不同的字段(都是id) 在VB6中,它将是简单的,如: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
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来实现这一点。