2017-06-09 81 views
-3

我正在尝试学习C#并遇到了一个问题,我希望你们知道一个简单的解决方案。在IF语句中运行查询

我想运行两个可能的LINQ查询,但是从不同的地方读取并且基于IF条件返回2个不同的字段(两个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. 
      } 
+5

这与LINQ无关。除此之外,这应该在C#中或多或少相同,除了没有'End If'和'Dim',而只是一些括号来定义范围。那么你的问题到底是什么? – HimBromBeere

+0

LINQ在执行查询函数后返回'IQueryable'集合,所以'IQueryable strQuery'然后使用'strQuery = x.Where(...)。Select(x => new {id1 = x.commonid,id2 = x.nextid} );'应该考虑那么。 –

+0

你在C#中尝试过什么?你可能试图使用LINQ to SQL? –

回答

0

三江源山本哲也指点我朝着正确的方向IQueryable的strQuery

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

动态是其失踪的话,现在可以完美运行。