2013-10-01 11 views
5

LINQを使用してMSSQL DBから2列だけを選択したいだけです。 SQLはLinq to SQL複数の列を選択

select table.col1,table.col2 from table 

でなければなりません

私は

IList<string> myResults = 
(
    from data in dbconn.table 
    where table.col5 == null 
    select new { 
     col1=data.Id.ToString(), 
     col2=data.col2 
    } 
).Take(20).ToList(); 

を試してみましたが、これは動作しませんでした。

それはあなたが基本的には動作しません匿名型のリストのエントリを持つ文字列のリストを埋めるためにしようとしている

cannot convert type list <AnonymousType#1> to Ilist<string> 
+1

あなたはそれが動作しないと言うとき、あなたは何を意味するかを解くと思いますか?例外はありますか?それは何も返しません、またはあなたが期待する以外の何か? – TheEvilPenguin

+0

注:LINQクエリサンプル/試行は、 "SQL should be be"ステートメントと一貫していないようです。おそらくあなたはあなたの目的と実際の問題を明確にすることができます – Seymour

答えて

11

言います。

あなたはこのようなものが

var list = from data in dbconn.table 
      where table.col5 == null 
      select new { 
      col1=data.Id.ToString(), 
      col2=data.col2 
      } 

は、その後、あなたが簡単に例

foreach(var element in list) { 
//... 
} 

ためか、リストのようなループ内のエントリを使用することができます?:試したことがあり

list.Take(20).ToList(); 
3

ファースト文字列のリスト(List<string>)は、2つではなく1つの文字列を持つことができます(どのようなここでやろうとしている)タイプをvarに変更すると例外が修正されますが、それがあなたが望む解決策であるかどうかはわかりません。

var myResults = 
(
    from data in dbconn.table 
    where table.col5 == null 
    select new { 
     col1=data.Id.ToString(), 
     col2=data.col2 
    } 
).Take(20).ToList(); 
3

linqを使用して複数のフィールドを選択することができます。上記のように、さまざまな例で選択すると、匿名タイプとして返​​されます。この匿名型を避けたいのであれば、簡単なトリックです。

var items = myResults.Select(f => new [] { f.Col1, f.Col2 }).SelectMany(item => item).Distinct(); 

私は、これが問題

関連する問題