有什么像.take for varchar?

时间:2013-06-06 17:24:23

标签: c# linq-to-sql

我有一个包含地址的表格,我需要按街道名称和街道号码排序后至少检索其中的13个。这两个字段都存储为nvarchar,所以.take将不起作用,因为我的理解只适用于int。问题是ID字段按所谓的BRT编号排序,由于重新评估,该编号仅与80%的街道名称/街道编号相关。

有什么想法吗?

当前代码如下所示。

private void textBox5_Leave(object sender, EventArgs e)
        {
            DataClasses3DataContext db = new DataClasses3DataContext();

            int matchedAdd = (from c in db.GetTable<prop>()
                              where c.LOC.Contains(textBox1.Text) && c.Direction.Contains(textBox2.Text) && c.LOC.Contains(textBox4.Text) && c.LOC.Contains(textBox5.Text)
                              select c.ID).Single();



            var before = (from c in db.GetTable<prop>()
                          where c.ID <= matchedAdd
                          orderby c.ID
                          orderby c.ID descending
                          select c).Take(7);

            var after = (from c in db.GetTable<prop>()
                         where c.ID > matchedAdd
                         orderby c.ID
                         select c).Take(6);


            var endResult = before.Union(after);

            dgvBRT.DataSource = endResult.OrderByDescending(i => i.streetNum);

        }

1 个答案:

答案 0 :(得分:1)

  

这两个字段都存储为nvarchar,所以.take不会起作用,因为我的理解只适用于int。

不,这应该是绝对正常的,尽管由于before两次orderby您的Take查询有点奇怪。 (抛弃第一个。)

int参数必须是{{1}}来表示您想要拍摄的物品数量,但您提取的物品可以是任何物品。