从var类型转换为不同的类

时间:2012-06-06 09:57:05

标签: c# .net azure

将var类型对象强制转换为类的数组。

在我的例子中,我可以从表中查询所有元素。但问题是当我施放它时,它只是没有强制转换所有实例。 任何帮助??

3 个答案:

答案 0 :(得分:1)

没有“var type”这样的类型。使用var的声明只会使编译器推断变量的类型。它仍然是静态类型的,并且就像你明确声明它一样 - 虽然它允许你声明使用匿名类型的变量。

在你的情况下,我们不知道所涉及的任何方法是做什么的,这意味着我们无法确切地知道发生了什么。听起来Query可能属于IEnumerable<AccessPointItem>类型。您需要在代码中表达如何从AccessPointItem转换为AccessPoint

需要注意几点:

  • 您的查询表达式有点无意义 - 您可能只是想要致电tsvc.CreateQuery<AccessPointItem>()
  • 传统上,C#中的局部变量使用驼峰套(以小写字母开头)而不是Pascal案例
  • 你创建一个没有目的的数组 - 为什么?
  • Select()将永远不会返回null,因此您无需检查它
  • 致电Cast会尝试将每个AccessPointItem投放到AccessPoint ......这真的是你想要的吗?

答案 1 :(得分:0)

看起来你正在混淆你的课程AccessPointAccessPointItem。试试这个:

public static AccessPoint[] getAllAps()
{
    return tsvc.CreateQuery<AccessPoint>("AccessPointTable").ToArray();
}

或者这个:

public static AccessPointItem[] getAllAps()
{ 
    return tsvc.CreateQuery<AccessPointItem>("AccessPointTable").ToArray();
}

答案 2 :(得分:0)

所涉及的类型有问题。

首先阅读AccessPointItem

var Query = from APs in tsvc.CreateQuery<AccessPointItem>(...)

然后您尝试将其投射到AccessPoint

return Query.Cast<AccessPoint>()

你需要实现某种转换方法才能使其工作(不幸的是我自己从未做过,但是从谷歌的快速运行中我看到有关该主题的大量信息可用)。我会把它放在头顶:

//inside AccessPointItem.cs
public static AccessPoint ToAccessPoint(this AccessPointItem item) // extension method looks good for the job
{
    AccessPoint retObj = new AccessPoint();
    // assign properties from 'item' to 'retObj'
    return retObj;
}

//Usage example in your case
return Query.Select(singleAccessPointItem => singleAccessPointItem.ToAccessPoint());