首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于查询Linq结果的问题

关于查询Linq结果的问题
EN

Stack Overflow用户
提问于 2010-10-14 03:56:17
回答 3查看 1.1K关注 0票数 2

当您查询现有的linq结果时,就好像它们被卡在比原始结果更深的一层。让我解释一下我这样说是什么意思。

在下面的示例中,在获取ResultSorted之后,要获取其中的数据,您必须使用RowSorted.All.TableData.Field,但在未排序的结果中,您可以只使用Row.TableData.Field。在排序后的数据中,您必须使用.All来获取其余的数据,这就像是一个额外的层来获取您要查找的数据。

我怎样才能得到它,这样我就可以查询结果,而不需要得到这个额外的层?谢谢Stack-O!

代码语言:javascript
运行
复制
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());
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-14 04:00:43

您可以使用

代码语言:javascript
运行
复制
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());
}

编辑:事情是这样的

代码语言:javascript
运行
复制
select new {TableData = a};

使用名为TableData的字段创建一个新的匿名类型,如下所示

代码语言:javascript
运行
复制
class Tmp1
{
     TableType TableData {get; set;}
}

代码语言:javascript
运行
复制
select new {All = a};

使用名为TableData的字段创建一个新的匿名类型,如下所示

代码语言:javascript
运行
复制
class Tmp2
{
     Tmp1 All {get; set;}
}

编辑2:

如果直接使用select a,则不会创建额外的匿名类型,而是返回TableType

票数 3
EN

Stack Overflow用户

发布于 2010-10-14 04:01:13

代码语言:javascript
运行
复制
var ResultSorted = 
   from a in Db.Table
   orderby a.Field
   select a.ToString();

编辑:已修复,未看到第一个查询。现在这应该是相同的。没有必要一直创建匿名对象。

票数 0
EN

Stack Overflow用户

发布于 2010-10-14 04:02:47

您将在每个LINQ查询中返回匿名类型的新实例:

代码语言:javascript
运行
复制
select new {TableData = a}; 
select new {All = a}; 

您对编译器说的是(在第一个LINQ查询中),“给我一个无名类型的新实例,我希望这个匿名类型有一个名为TableData的属性,并且我希望该属性的值为a。”

如果只返回a而不是无源类型,则不需要遍历嵌套类型的属性来获取数据。试试这个:

代码语言:javascript
运行
复制
var Result =  
from a in Db.Table  
select a;  

var ResultSorted =   
from a in Result  
orderby a.TableData.Field  
select a;  

foreach(var RowSorted in ResultSorted)  
{  
    MessageBox.Show(RowSorted.ToString());  
}  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3927496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档