2017-06-09 104 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 
      } 

動態是其失蹤的話,現在可以完美運行。