8

このエラーを修正する方法を知っていますか? この行に「foreach (int s in itemColl)」というエラーが表示されます

私がしなければならないこと?

エラー 1 タイプ 'AnonymousType#1' を 'int' に変換できません C:\Users\Rafal\Desktop\MVC ksiązka\moj projekt\sklep\SportsStore.WebUI\Controllers\ProductController.cs 37 21 SportsStore.WebUI

var itemColl = from p in re.Kategorie
               where p.Nazwa == category
               select new
               {
                   p.Id_kat
               };


                foreach (int s in itemColl)
                {
                    Console.WriteLine(s);
                }
4

4 に答える 4

25

キーワードで選択itemCollし、匿名型を定義しています。型でループを適用することはできません。現在のクエリは次のようなものを返していますnewforeachintIEnumerable<AnonymousType>

代わりに、次のようにすることができます。

var itemColl = from p in re.Kategorie
               where p.Nazwa == category
               select p.Id_Kat;

これは返さIEnumerable<int>れ、現在の foreach ループで使用できます。

ただし、匿名型を選択して現在のクエリを使用する場合は、 foreach ループを暗黙的な型varで変更する必要があります。現在のクエリは匿名型オブジェクトを返すため、オブジェクトから を選択できId_katます。何かのようなもの。

foreach (var s in itemColl)
{
    Console.WriteLine(s.Id_kat);
}

intIMO、匿名型内にラップされた型を返すだけなので、2 番目のアプローチはお勧めしません。クエリを変更して返すことができれば、より良いIEnumerable<int>

于 2012-08-06T12:02:50.440 に答える
7

選択を次のように変更するだけです。

var itemColl = from p in re.Kategorie 
    where p.Nazwa == category 
    select p.Id_kat;

これにより、IEnumerable<int>で使用しようとしているが作成されますforeach

は、次のような新しいクラスであると言う最も簡単な方法であるselect new { p.Id_Kat }新しい匿名型を作成しています。

class AnonymousType#1
{
    public int Id_Kat {get; set;}
}
于 2012-08-06T12:04:42.033 に答える
5
var itemColl = from p in re.Kategorie
               where p.Nazwa == category
               //This is Anonymous Type
               select new
               {
                  //Anonymous type's attribute(s) go(es) here 
                  IntItem = p.Id_kat
               };

               foreach (var s in itemColl)
               {
                  Console.WriteLine(s.IntItem);
               }
于 2012-08-06T12:04:49.793 に答える
4

まあ、匿名のlinq-resultの代わりに実際の(int)値を返すことができます

var itemColl = from p in re.Kategorie
    where p.Nazwa == category
    select p.Id_Kat;
于 2012-08-06T12:04:23.427 に答える