关于linq的两种表达形式

大胡子毛绒老头 2012-10-18 05:42:42
context.Field.AsEnumerable().SkipWhile(f => f.PId != null);
context.Field.AsEnumerable().TakeWhile(f => f.PId == null);
from f in context.Field where f.PId == null select f;

前两个没什么可说的。但非为预期结果,虽然一开始还是都可以用的。
现在只有第三个正常。
数据库查了,
select * from Field where PId is null;

是正常的。
数据库有过改动,之前Field表是Id int 主键, Name nvarchar(50) 非空, PId int 内联Id 可为空,
改动的全部列都是nvarchar(50)。
但不记得具体是什么时候出现这问题的。
...全文
187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2012-10-19
  • 打赏
  • 举报
回复
只能说: 提问也是一门艺术
  • 打赏
  • 举报
回复
哦……给个不一样的理由。我太笨
EnForGrass 2012-10-18
  • 打赏
  • 举报
回复
context.Field.AsEnumerable().SkipWhile(f => f.PId != null);
context.Field.AsEnumerable().TakeWhile(f => f.PId == null);
from f in context.Field where f.PId == null select f;
这三条显示你确定会一样吗?
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
[/Quote]
context.Field.AsEnumerable().TakeWhile(f => f.PId == null);
from f in context.Field where f.PId == null select f;

为什么结果不一样呢?
MoXiaoRab 2012-10-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:
C# code


void Main()
{
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var skipQuery=numbers.Skip(3); //跳过前三个元素,结果是 3, 9, 8, 6, 7, 2, 0
var skipWhileQuery=numbers.SkipWhile(x………
[/Quote]
你题目没讲明白,我都没看懂
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
C# code


void Main()
{
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var skipQuery=numbers.Skip(3); //跳过前三个元素,结果是 3, 9, 8, 6, 7, 2, 0
var skipWhileQuery=numbers.SkipWhile(x……
[/Quote]你不说就当我不明白呢?再者你跑题了。不明白你为什么跑题。最后给你一点建议:面向对象的语言大可不必说得这么细致。
q107770540 2012-10-18
  • 打赏
  • 举报
回复

void Main()
{
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var skipQuery=numbers.Skip(3); //跳过前三个元素,结果是 3, 9, 8, 6, 7, 2, 0
var skipWhileQuery=numbers.SkipWhile(x=>x<6); //从第一个元素开始,当x<6时就SKIP,所以结果是9, 8, 6, 7, 2, 0
var query=numbers.Where(x=>x<6); //此时会找到数组内所有<6的元素: 5, 4, 1, 3, 2, 0

//明白了么
}


http://topic.csdn.net/u/20120925/14/e3e77a01-3599-4bb6-b04a-480dd431b2ae.html
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
不是两种表达形式,三个表达式完全是不同的意义。
[/Quote]但愿你没说完,不然这回复可没什么意思。
前两个效果一样的,一看就知道。
种草德鲁伊 2012-10-18
  • 打赏
  • 举报
回复
不是两种表达形式,三个表达式完全是不同的意义。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧