0

Linqを使用してEFを使用してリストzzを作成していますが、これは正常に機能しています。

var zz = (from m in z
          join n in t_bb
          on m.id equals n.id into output
          from j in output.DefaultIfEmpty()
          select new
          {
              s_Id = m.s1,
              name = j.Name,
              main_Date = m.mDate,
          });

return zz;

次のコードを使用してメソッドでこれにアクセスすると

inputOutput io = new inputOutput();
var n = io.readWrite1(); 
foreach (var i in n)
{
    i.name;
    //Complier gives error Type or namespace i could not be found at i.name
    Console.WriteLine(i);
}

これはすべて正常に機能し、コンソールでリストを取得できます。問題は、リスト内の任意のプロパティにアクセスしようとするとi.name、IntelliSense が得られないことです。マウスを上に置くと、「タイプと名前空間が見つかりませんでした」と表示されます。

4

1 に答える 1

2

残念ながら、C# と Visual Studio は、メソッドの境界を越える匿名クラスではうまく機能しません。呼び出し元のメソッドでインテリセンスを取得するには、具体的なクラスまたはタプルにする必要があります。

別のオプションは dynamic (n.Cast< dynamic >()) を使用することですが、それでもインテリセンスは得られませんが、プロパティを使用することはできます。

于 2013-05-31T02:45:45.023 に答える