我有var
变量叫做retVal,它等于某个查询。在一些条件之后,我想将它等同于另一个查询。但是我收到一个错误,如implicit cast of type "System.Collections.Generic.IEnumerable<AnonymousType#1>" in "System.Collections.Generic.IEnumerable<AnonymousType#2>" is impossible
。你可以问我为什么我不想定义另一个var
变量。因为这个在foreach
周期中使用。让我们的代码一看:如何将var变量等同于另一个查询
var retVal = from groupItem in result.AsEnumerable()
where groupItem.Sms.First().amountOfParts == (
(from item in rawSmsList.AsEnumerable()
where item.referenceNumber == groupItem.Sms.First().referenceNumber
select item).Count()
)
select new
{
Value = groupItem.Value,
Sms = groupItem.Sms
};
//CONDITION
if (retVal.ToArray().Length==0)
{
//HERE I NEED TO RETVAL EQUATE NEW QUERY
retVal = from groupItem in result.AsEnumerable()
where groupItem.Sms.First().amountOfParts == (
(from item in rawSmsList.AsEnumerable()
where item.senderNumber == groupItem.Sms.First().senderNumber
select item).Count()
)
select new
{
Value = groupItem.Value,
Sms = groupItem.Sms
};
}
foreach (var item in retVal)//FOREACH EXPECTS THE SAME RETVAL!!!
因此,如何会产生不同的查询到同一var
变量?或者如何找到var
变量的类型,然后将其转换为新的已定义变量?
也许['SequenceEqual'](http://msdn.microsoft.com/zh-cn/library/bb342073.aspx)可用于比较两个匿名类型结果的结果。 – 2013-03-27 04:36:08
@JonathonReinhart,我认为通过等同于OP意味着将新查询的结果分配给现有的'retVal',它的一种混乱,但从代码似乎如此 – Habib 2013-03-27 04:37:23
没有任何方法可以将一个匿名类型投给另一个? – Nolesh 2013-03-27 04:37:28