2017-06-09 15 views
-3

私はC#を学びたいと思っています。あなたには簡単な解決方法が分かることを願っています。IFステートメント内でクエリを実行してください

2つの可能な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'コレクションを返しますので、' strQuery = x.Where(...)を使用して 'IQueryable strQuery'を返します。(x => new {id1 = x.commonid、id2 = x.nextid} ); 'それを考慮する必要があります。 –

+0

C#で何を試しましたか?おそらくLINQ to SQLを使用しようとしていますか? –

答えて

0

ありがとう山本哲也のIQueryable strQuery

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

ダイナミックが欠落していた言葉だった正しい方向に私を指しているため、それが今で完璧に動作します。

関連する問題