2017-03-23 12 views
1
var model = from m in db.Customers 
      orderby m.a descending 
      select new Get_Complaint_Form_Sub 
      { 
       CustomerFullName = m.a, 
       Email = m.Email_Address, 
       PhoneNumber = m.Telephone_No 
      }; 

私が選択した列を取得するために、このLINQクエリを使用していますdb。ここはすなわち、モデルを消費何か下流であることが問題のように聞こえるためモデル項目はタイプ「Entity.Infrastructure.DbQuery`1 [N]」のですが、この辞書は、「N」タイプのモデルアイテムを必要と

+0

申し訳ありませんが、私はLINQクエリを初めて使用しています。まだ学んでいる。事前に感謝します – Dexter

+1

私はあなたのコードで辞書の言及を参照してくださいないが、あなたは問題のタイトルでそれを言及 –

答えて

0

を降順でテーブルの最後のレコードをフェッチします。特に、のいずれかがNであると予想されるように聞こえますが、それらのクエリはありません。だから... .SingleOrDefault().FirstOrDefault().Single()または.First()をクエリに追加することもできます(目的に応じて)。たとえば、次のように、より一般的な注意点としては

var query = from m in db.Customers 
     orderby m.a descending 
     select new Get_Complaint_Form_Sub 
     { 
      CustomerFullName = m.a, 
      Email = m.Email_Address, 
      PhoneNumber = m.Telephone_No 
     }; 
var model = query.FirstOrDefault(); 

IQueryable<T>は通常、保留中のクエリである - それはまだ実行されていません。 モデルについて話しているほとんどの場合、剛性データについて話したいと思うでしょう。したがってをのように表現しようとしている場合は、クエリを評価してリスト/配列を作成するには、おそらく.ToList()または.ToArray()を使用してください。

0

suggested by Marcとして、問題はLinqクエリではなく、MVCビューにあります。あなたが投稿したエラーメッセージは、あなたのビュー(つまり、あなたの.cshtmlファイル)が1つのタイプを予期していますが、別のタイプを期待していると伝えています。単一の値の代わりに値の列挙を渡すというよくある間違いをしたようです。あなたのソリューションは、次のいずれかです。Single()を使用して、ビューに単一の値で

  • 峠 `ファースト()など
  • はそれだけではなくTIEnumerable<T>を取るので、あなたのビューを修正、およびに内のコードを更新それに応じて対処する。
関連する問題