浏览:3622007-12-08 01:50   来自Cheney Shue      :
一个方法返回IQueriable类型

public IQueriable GetValue()
{
    DataContext db = new DataContext();
    var v = from s in db.Table1
          select new { c.col1, c.col2 };
    return v;
}

然后在另一个方法中调用此方法

public void m()
{
    var v = GetValue();
}

可是在此方法中无法识别v的类型,不能使用GetValue返回IQueriable类型中的值。
怎么办?
楼主
  6个月前   只吃豆芽猪      :
完全可以这样用.刚试过
回复  1楼 回到顶楼 
  6个月前   Cheney Shue      :
@只吃豆芽猪
可是GetValue()返回匿名的IQueryable啊,我这么没办法用呢
回复  2楼 回到顶楼 
  6个月前   Elden      :
IQueryable拼错了
回复  3楼 回到顶楼 
  6个月前   Cheney Shue      :
@Elden
这个不重要
回复  4楼 回到顶楼 
  6个月前   Colin Han      :
可以编译过吗?貌似编译不过吧。
IDE很多Feature都是基于编译后使用反射完成的。如果编译不过,很多功能都不能使用的。
回复  5楼 回到顶楼 
  6个月前   Cheney Shue      :
文档中是这样写的:
var can only be used when a local variable is declared and initialized in the same statement; the variable cannot be initialized to null.
var cannot be used on fields at class scope.
var类型不能在class范围内使用,只能在method中用。关键是new { c.col1, c.col2 }如何用非匿名类型?一定要定义一个类吗?
回复  6楼 回到顶楼 
  6个月前   Elden      :
匿名类型不是这样用的吧
应该是
var v = from s in db.Table1
select new { field1 = s.col1, field2 = s.col2 };
回复  7楼 回到顶楼 
  6个月前   Cheney Shue      :
@Elden
就是这样啊,但是不能跨出方法
回复  8楼 回到顶楼 
  6个月前   Elden      :
可以"跨出方法"啊
回复  9楼 回到顶楼 
  6个月前   Cheney Shue      :
怎么用啊?
像我上面用
var v = GetValue();
不识别v是什么东西,是不是要强制转换?
回复  10楼 回到顶楼 
  6个月前   Elden      :
v还是IQueryable

我这样写没问题:

public IQueryable GetValue()
{
NorthwindDataContext db = new NorthwindDataContext();
var v = from s in db.Products
select new { name = s.ProductName };
return v;
}

public void Show()
{
var v = GetValue();
foreach (var item in v)
{
Console.WriteLine(item);
}
}
回复  11楼 回到顶楼 
  6个月前   Cheney Shue      :
@Elden
如果要查询ProductID和ProductName两个字段怎么办?
回复  12楼 回到顶楼 
  6个月前   Elden      :
回复  13楼 回到顶楼 
  6个月前   Cheney Shue      :
@Elden
谢谢,还是要通过Cast啊
回复  14楼 回到顶楼 

你还不是小组成员,加入小组以后才能发布新主题!
1 20714