2016-04-16 10 views
0

ユーザー名、メッセージ、件名などの特定の列を、ASP.NETのEntity FrameworkのSQL Serverデータベースからのみ選択したいとします。しかし、私のプログラムはテーブルemailtableのすべての列を返します。ASP.NET WebFormsのEntity Frameworkで特定の列を選択する方法は?

kicsEntities db = new kicsEntities(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    emailtable et = new emailtable(); 

    string var = Session["username"].ToString(); 

    GridView1.DataSource = db.emailtables.Where(em => em.receiver == var).ToList(); 
    GridView1.DataBind(); 
} 
+0

プロパティを使用してViewModelクラスを作成してから、.Select(x => new Vm(){...})を使用してクエリを続行する必要があります。 –

答えて

0

あなたはあなたのデータベースモデルにビューを追加し、それはあなたが取得したい列のみが含まれている可能性があり:

は、ここに私のコードです。アプローチがコードファーストである場合、this SO postで説明されているようにビューを追加/マップできます。

2

投影を使用できます。たとえば、MyClassというビューモデル(c#クラス)を作成し、データベースオブジェクトから必要なプロパティを宣言します。

今、あなたは、データベーステーブルから

db.TableName.Select(m => new MyClass 
{ 
    Username = m.Username, 
    Message = m.Message, 
    Subject = m.Subject 
}); 

が必要なプロパティのみを要求することができますあなたは今、強く型付けされたコントロールを持つことの付加的な利点を持つあなたのGridViewのデータソースとして返されるコレクションをバインドすることができますLINQのを使用して

public class MyClass 
{ 
    public string Username { get; set; } 
    public string Message { get; set; } 
    public string Subject { get; set; } 
} 

関連する問題