日期:2014-05-20  浏览次数:20722 次

[求助]帮忙写一个LINQ。。。谢谢~~~~
实现的功能就是从表里读取 第11条 到 第20条 数据
SQL语句是
select top 10 * from student where id not in ( (select top 10 id from student ))

我用 var query =( from student in c.student select new { student .Id }).Skip(10).Take(10) ); 是不行的。不知道是不是因为ID是nvarchar类型的,得到的数据不是数据库里第11条到20条,而是别的数据行。
同样,如果用Take(20).Skip(10)的话,读到的数据也不是正确的。

如何把这个写成LINQ语句啊,谢谢了。
初学LINQ,完全无从下手~~~~~~

------解决方案--------------------
C# code
public void LinqToSqlPaging01() {
    var q = (
        from c in db.Customers
        orderby c.ContactName
        select c)
        .Skip(50)
        .Take(10);

    ObjectDumper.Write(q);
}

------解决方案--------------------
一个string的ID,你要它按照int来排序,这样当数据多时就是灾难了。

现在还有时间,删除了你的代码,重新设计吧。
------解决方案--------------------
var query=student.Skip(10).Take(10);
------解决方案--------------------
把 ID LeftPad 满位再排序

var query = c.student.OrderBy(s => s.Id.PadLeft(5, '0')).Skip(10).Take(10);

不过,同意sp1234的,应该把表修改下,要么插入时就是满位的。