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