当前位置:编程学习 > C#/ASP.NET >>

关于LINQ中SELECT NEW 的问题。

请帮忙看看,我返回的结果如何进行遍历
 public static object SelectAnyInfo()
{
    DataAccessContext context = new DataAccessContext();
    var query = from c in context.VideoNetServers
                from cc in context.Areas
                from ver in context.VersionItems
                where c.Areas.AreaID == cc.AreaID && 
                      c.VideoNetServerRowID == ver.ResourceRowID &&
                      ver.ResourceTableName.Contains("VIDEONETSERVERS") &&
                      ((ver.VersionTo == int.MaxValue) || (ver.VersionTo == 0 && ver.Action != "删除")) 
                orderby c.VideoNetServerID
                select new 
                {
                    c.VideoNetServerRowID,
                    c.VedeoNetServerName,
                    c.VedeoNetServerCode,
                    c.IPAddress,
                    cc.AreaName
                };
    return query;
}

public static List<Plant> GetData
{
    get{
        var ds = DataAccess.VideoNetServers.SelectAnyInfo();

        List<Plant> data = new List<Plant>();

        foreach (var obj in ds){
        //这个里面无法遍历,Foreach无法定义Var obj
        //麻烦高手看看        
        }
        return data;
} --------------------编程问答-------------------- 你SelectAnyInfo返回的是object类型需要转换才能遍历
public static Queryable SelectAnyInfo() 改成Queryable  --------------------编程问答--------------------
引用 1 楼 herojams 的回复:
你SelectAnyInfo返回的是object类型需要转换才能遍历
 public static Queryable SelectAnyInfo() 改成Queryable

对,返回类型不能是object的 --------------------编程问答--------------------
引用 1 楼 herojams 的回复:
你SelectAnyInfo返回的是object类型需要转换才能遍历
public static Queryable SelectAnyInfo() 改成Queryable

问题是var query,这个query对象没办法转成Queryable,我生成的对象是select New的对象。 --------------------编程问答-------------------- 你是要返回  List <Plant> data = new List <Plant>(); 吧
要不直接在
public static List<Plant> SelectAnyInfo() 
{
  foreach(var v in query )
   {
      ............
   }
} --------------------编程问答-------------------- 呵呵,这位兄弟犯得跟我一样的错,对泛行不是很理解。
理解了泛行就知道怎么改了。
foreach的方便用法也是应为有个确定的类型可以遍历。
直接就可以读取对象属性。 --------------------编程问答--------------------
引用 3 楼 csharpbull 的回复:
 问题是var query,这个query对象没办法转成Queryable,我生成的对象是select New的对象。

linq查询的结果都是IEnumable的  返回IEnumable 不是Queryable --------------------编程问答--------------------
引用 4 楼 huming_h 的回复:
你是要返回  List <Plant> data = new List <Plant>(); 吧
要不直接在
public static List <Plant> SelectAnyInfo()
{
  foreach(var v in query )
  {
      ............
  }
}


List <Plant>
数据访问成层我封成了DLL,Plant是我调用DLL的程序中自己定义的类,不是LINQ中的数据模型对象。
头大啊 --------------------编程问答-------------------- select new 
                { 
                    c.VideoNetServerRowID, 
                    c.VedeoNetServerName, 
                    c.VedeoNetServerCode, 
                    c.IPAddress, 
                    cc.AreaName 
                }; 
将上述代码定义成一个MyClass类
public static List<MyClass> SelectAnyInfo() 

 return query.ToList<MyClass>();
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,