2016-06-23 15 views
0

SQL Serverデータベースに格納されているデータをC#を使用してデータグリッドに表示したいとします。 this examples on msdnに従いましたが、型変換エラーが発生しました。 Visual Studio 2013を使用しています。C#のデータ型変換エラー

私はSQLサーバーに接続しており、myEntityという名前のADO.NETデータモデルを作成しました。モデルにはいくつかのテーブルがあり、そのうちの1つであるTheatreが画面に表示しようとしています。ここで

は私が持っているものです:MainWindow.xamlファイルに 私はMainWindow.xaml.csオン

<Page x:Class="XYZ.MainPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="theater List" Height="350" Width="525" 
     Loaded="Data_Loaded"> 
    <Grid> 
     <DataGrid Name="dataGrid1"></DataGrid> 
    </Grid> 
</Page> 

を持っている私が持っているファイル:

using System.Data.Entity.Core.Objects; 
using System.Windows; 
using System.Windows.Controls; 
using System.Linq; 

namespace XYZ 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public sealed partial class MainPage : Page 
    { 
     myEntities dataEntites = new myEntities(); 

     public MainPage() 
     { 
      InitializeComponent(); 
     } 

     private void Data_Loaded(object sender, RoutedEventArgs e) 
     { 
       ObjectQuery<Theater> theaters = dataEntites.Theaters; 

       var query = from theater in theaters 
          where theater.type == "Big" 
          orderby theater.id 
          select new 
          { 
           theater.State, 
           theater.City, 
           theater.Type, 
           theater.Id, 
           theater.Name, 
           theater.Capacity 
           ... 
          }; 

       dataGrid1.ItemsSource = query.ToList(); 
     } 
    } 
} 

私は上のエラーメッセージに遭遇しました述べライン

ObjectQuery<Theater> theaters = dataEntites.Theaters; 

暗黙的にタイプ'System.Data.Entity.DbSet<XYZ.Theater>' 私はこの問題を解決する可能性がどのように

'System.Data.Entity.Core.Objects.ObjectQuery<XYZ.Theater>'に変換することができませんか?ありがとう。ここで

+0

さて、あなたは 'のObjectQuery '必要があると思う何らかの理由がありますか?私はたぶん、変数が 'IQueryable 'の型であると宣言しています... –

+0

可能な複製http://stackoverflow.com/a/11262713/5922757 – Jezor

+0

何も具体例に従わないようにしてください。私はIQueryable を試してみます。 – Hank

答えて

1

問題はSystem.Data.Entity.Core.Objects.ObjectQuery<T>System.Data.Entity.DbSet<T>から継承していないため、一つのクラスの目的は、(implicit type conversion operatorがケースされていないオーバーライドされる期待)暗黙的に別のものに変換することができないことです。

だから、単にDbSet<Theater>ObjectQuery<Theater>から変数劇場の種類を変更する必要があります。

   DbSet<Theater> theaters = dataEntites.Theaters; 

       var query = from theater in theaters 
         where theater.type == "Big" 
         orderby theater.id 
         select new 
         { 
          theater.State, 
          theater.City, 
          theater.Type, 
          theater.Id, 
          theater.Name, 
          theater.Capacity 
          ... 
         }; 
+0

それは働いて、ありがとう。ビューアの場合、BbSet はSystem.Data.Entity名前空間を使用します。 – Hank