我有一个包含地址的表格,我需要按街道名称和街道号码排序后至少检索其中的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);
}
答案 0 :(得分:1)
这两个字段都存储为nvarchar,所以.take不会起作用,因为我的理解只适用于int。
不,这应该是绝对正常的,尽管由于before
两次orderby
您的Take
查询有点奇怪。 (抛弃第一个。)
int
的参数必须是{{1}}来表示您想要拍摄的物品数量,但您提取的物品可以是任何物品。