2009-03-30 13 views
1

データを抽出する必要があるテーブルがあり、データの元の2つの列の1つを破棄したいと考えています。私のDBには、 "ObjectID(PK)"と "ObjectName"があります。LINQ:IQueryableの単一の列からデータを選択する<>

私はASP.NET MVCプロジェクトでSelectListのを移入するために、このデータを使用したい、そのため次のように見える私のコード内のIQueryableオブジェクトがあります:私は最後を変更しようとすると

public IQueryable<objectRef> FindSomeObject() 
{ 
    return from myObj in db.TableName 
     orderby myObj.colName 
     select myObj; 
} 

を私は暗黙のうちに私の現在の型に匿名型を変換しようとしています警告を受ける

select new { myObject.colName }; 

:行は、以下のようなデータの価値だけで単一の列を、引っ張ります。

ViewData[""]にこのクエリを使用して、ドロップダウンをうまく表示しますが、テキストではなく新しいテーブルにPK値を書き込みます。

RTFMの何時間も役に立たないと私はGoogleに正しい質問をすることさえできないと私は思っています。どんな助けもありがとう。

答えて

8

メソッドの戻り値の型を変更する必要があります.1つの列だけを選択する場合は、その列の何かを返すと宣言します。たとえば、:

public IQueryable<string> FindSomeObject() 
{ 
    return from myObj in db.TableName 
     orderby myObj.colName 
     select myObj.colName; 
} 

これは基本的には、文字列のシーケンスを返すクエリだと言います。これはあなたが望むものです。

3

のように、colNameにのタイプを使用します。

public IQueryable<string> FindSomeObject() 
{ 
    return from myObj in db.TableName 
     orderby myObj.colName 
     select myObj.colName; 
} 
1

あなたがしようとしました:

public IQueryable<objectRef> FindSomeObject() 
{ 
    return from myObj in db.TableName 
     orderby myObj.colName 
     select myObj.colName; 
} 

ところで、あなたは小文字を始め、objectrefに呼ばれるクラスを持っていますか?それは最初に大文字にする必要があります(それはどんなタイプでも必要です)。colNameです。

+0

@Jon Skeet、Freddy Rios、Earwicker 返信ありがとう、正しい方向に私を指してくれてありがとう。すべてが期待どおりに動作しています。 @Earwicker:私の実際のコードは私の提供した例よりも優れています。私はまだPerlスタイルのシンタックスをたくさん打ち出しています。 –

関連する問題