将 var 类型的对象转换为类的数组。
在我的示例中,我可以从表中查询所有元素。但问题是当我投射它时,它只是不投射所有实例。有什么帮助吗??
没有“var 类型”这样的类型。声明 using var
just 使编译器推断变量的类型。它仍然是静态类型的,并且就像您明确声明它一样工作 - 尽管它允许您声明使用匿名类型的变量。
在您的情况下,我们不知道所涉及的任何方法的作用,这意味着我们无法真正知道发生了什么。听起来Query
可能是 type IEnumerable<AccessPointItem>
。您需要在代码中表达如何从 a 转换AccessPointItem
为AccessPoint
.
需要注意的几点:
tsvc.CreateQuery<AccessPointItem>()
Select()
永远不会返回 null,所以你不需要检查它Cast
将尝试将每个都投射AccessPointItem
到AccessPoint
... 这真的是您的意图吗?所涉及的类型有问题。
首先你读到AccessPointItem
:
var Query = from APs in tsvc.CreateQuery<AccessPointItem>(...)
然后您尝试将其转换为AccessPoint
:
return Query.Cast<AccessPoint>()
您将需要实现某种转换方法才能使其正常工作(不幸的是,我自己从未做过,但从 Google 的快速运行中,我看到了有关该主题的大量信息可用)。我会从头顶上试一试:
//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());
看起来好像您正在混合您的课程AccessPoint
和AccessPointItem
. 尝试这个:
public static AccessPoint[] getAllAps()
{
return tsvc.CreateQuery<AccessPoint>("AccessPointTable").ToArray();
}
或这个:
public static AccessPointItem[] getAllAps()
{
return tsvc.CreateQuery<AccessPointItem>("AccessPointTable").ToArray();
}