0

私のC#クラスには、次のコードがあります。

var myData= Db.SetName;
myData = myData.Where(p => p.Set2.Date >= start
                && p.Set2.Date <= end);

どのDbが私のDbObject(またはDbContext)ですか

しかし、私は次のエラーを受け取ります:

Error:Cannot implicitly convert type 'System.Linq.IQueryable<SetName>' to 
'System.Data.Objects.ObjectSet<SetName>'. An explicit conversion exists 
(are you missing a cast?)

問題はどこだ?

4

3 に答える 3

4

この行:

var myData = Db.SetName;

myDataタイプ.という名前の変数を作成して割り当てますObjectSet<SetName>。次の行:

myData = myData.Where(p => p.Set2.Date >= start && p.Set2.Date <= end);

IQueryable<SetName>...同じ変数に型の値を割り当てようとします。ObjectSet<SetName>を実装しますが、タイプの値をタイプの変数にIQueryable<SetName>割り当てることができないのと同じ理由で、後者のタイプの値を前者のタイプの変数に割り当てることはできません。IAnimalDog

根本的な問題は、(種類の)の使用です。これは、エラーvarのタイプをmyData隠し、エラーの理由をあいまいにするためです。これは機能するはずです:

IQueryable<SetName> myData = Db.SetName;
myData = myData.Where(p => p.Set2.Date >= start && p.Set2.Date <= end);

...これもそうです:

var myData = (IQueryable<SetName>)Db.SetName;
myData = myData.Where(p => p.Set2.Date >= start && p.Set2.Date <= end);

...どちらもタイプが明示的に記述myDataIQueryable<SetName>れているため、後でそのタイプの値に割り当てることができます。

于 2013-02-10T19:04:12.410 に答える
2

ある型として暗黙的に宣言しmyData、その値を別の型に代入しようとしています。代わりにこれを行います:

var myData= Db.SetName.Where(p => p.Set2.Date >= start && p.Set2.Date <= end).AsQueryable();

于 2013-02-10T14:40:26.107 に答える
0

私は自分のマシンにいないので、それについてはわかりませんが、 の.AsQueriable()後に追加することができますWhere()

于 2013-02-10T15:08:53.043 に答える