当您查询现有的linq结果时,就好像它们被卡在比原始结果更深的一层。让我解释一下我这样说是什么意思。
在下面的示例中,在获取ResultSorted之后,要获取其中的数据,您必须使用RowSorted.All.TableData.Field,但在未排序的结果中,您可以只使用Row.TableData.Field。在排序后的数据中,您必须使用.All来获取其余的数据,这就像是一个额外的层来获取您要查找的数据。
我怎样才能得到它,这样我就可以查询结果,而不需要得到这个额外的层?谢谢Stack-O!
var Result =
from a in Db.Table
select new {TableData = a};
var ResultSorted = 
from a in Result
orderby a.TableData.Field
select new {All = a};
foreach(var RowSorted in ResultSorted)
{
    MessageBox.Show(RowSorted.All.TableData.ToString());
}发布于 2010-10-14 04:00:43
您可以使用
var Result =
from a in Db.Table
select a;
var ResultSorted = 
from a in Result
orderby a.Field
select a;
foreach(var RowSorted in ResultSorted)
{
    MessageBox.Show(RowSorted.ToString());
}编辑:事情是这样的
select new {TableData = a};使用名为TableData的字段创建一个新的匿名类型,如下所示
class Tmp1
{
     TableType TableData {get; set;}
}和
select new {All = a};使用名为TableData的字段创建一个新的匿名类型,如下所示
class Tmp2
{
     Tmp1 All {get; set;}
}编辑2:
如果直接使用select a,则不会创建额外的匿名类型,而是返回TableType。
https://stackoverflow.com/questions/3927496
复制相似问题