0

我正在使用 EF 使用 Linq 创建一个列表 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,当我将鼠标悬停在 i 上时,它显示“找不到类型和命名空间”。

4

1 回答 1

2

不幸的是,c# 和 Visual Studio 不能很好地处理跨越方法边界的匿名类。你必须把它变成一个具体的类或元组才能在你的调用方法中获得智能感知。

另一种选择是使用动态 (n.Cast< dynamic >()) - 但这仍然不会给您智能感知 - 但是您将能够使用该属性。

于 2013-05-31T02:45:45.023 回答