2016-05-11 5 views
-1

私のコントローラファイルには以下のものが含まれています。 'System.Data.Linq.ISingleResult <"">'を暗黙的に 'System.Collections.Generic.IEnumerable <" ">'に変換することはできません。明示的な変換は存在しますか?

public ActionResult Index() 
{ 
    CityNameList ct = dt.AllCity(); /*Returns Citynames. Used Linq to Sql Classes to retrieve from DB. */ 

    return View(ct); 
} 

そしてCityNameList.csで

は本当にたくさんの問題を解決しようとした
public class CityNameList 
{ 
    public IEnumerable<string> CityName {get;set;} 
} 

モデル

、ない使用中のファイル。 私はMVCが初めてです。コントローラのストアドプロシージャの結果からViewにデータを渡すという明確なアイデアが必要です。

+0

AllCity()にコードを入力してください – JDupont

+0

あなたのプログラムに関する情報を追加して、エラーメッセージを受け取った行はありますか?私は、CityNameにSingleResult型の値を代入しようとしていると仮定します。これはIEnumerable ですが、それに関する多くの情報は提供していません。 – Auguste

+0

@JDupont - AllCity()は、LinqからSqlクラスに呼び出されるストアドプロシージャの名前で、dtはL2SQLクラスのオブジェクトodデータコンテキストです。 CityNmaeList.csファイルの何か.. ?? – Abhi

答えて

0

LinqToSqlを使用しているようです。 ISingleResultを返すストアドプロシージャの場合は、結果を列挙してデータを取得する必要があります。 ToList()を呼び出して結果をIEnumerableに変換することができます。また、それは以下に

var result = dt.AllCity(); 
CityNameList ct = null; 
if (result != null && result.Any()) { 
    ct = new CityNameList { CityName = result.ToList()}; 
} 
return View(ct); 
+0

@ vendettamit - 次のようなエラーが発生します。 - 'System.Collections.Generic.List 'を 'System.Collections.Generic.IEnumerable 'に暗黙的に変換できません。明示的な変換が存在する(キャストがありませんか?).....すべて厳密な型指定のビュー生成のために、ストアドプロシージャの出力をCityNamelist.csクラスにマップする必要があります。 – Abhi

-1

変更CityNameListクラスのプロパティのようになります。

public class CityNameList 
    {  
     public string CityName{ get; set; } 
    } 

、以下のようなクラスCityNameListにストアドプロシージャの出力をマップするために別のクラスを追加します。

forループ内のcitynameはDBに保存されている手順を実行した後に帰国されるテーブルのカラム名で、そして最後にモデルクラスCityNameList.Itと強く型付けされたビューを追加するには正常に動作します
public class CityDataContext 
{ 
    DataDataContext dt = new DataDataContext(); 
    public IEnumerable<CityNameList> DisplayName 
    { 
     get 
     { 
      List<CityNameList> Details = new List<CityNameList>(); 
      var result = dt.AllCity().ToList(); 
      for (int j = 0; j < result.Count;j++) 
      { 
       CityNameList city = new CityNameList(); 
       city .CityName= Convert.ToString(result[j].cityname); 

       Details.Add(city); 
      } 
      return Details; 
     } 
    } 
} 

....

関連する問題