2013-06-06 3 views
0

주소가있는 테이블이 있는데 거리 이름과 거리 번호로 정렬 한 후 순서대로 적어도 13 개를 검색해야합니다. 두 필드 모두 nvarchar로 저장되므로 .take는 int로만 작동한다는 것을 이해할 수 있으므로 작동하지 않습니다. 문제는 ID 필드가 재평가로 인해 거리 이름/거리 번호 80 %와 만 상관되는 BRT 번호로 정렬되는 것입니다.varchar에는 .take와 같은 것이 있습니까?

아이디어가 있으십니까?

현재 코드는 다음과 같습니다. .take는 INT와 함께 작동에 대한 이해에서 작동하지 않도록

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

참고 : 두 개의'orderby' 절을 사용하면 거의 좋은 아이디어가 아닙니다. 동일한 속성에 대해 두 개를 사용하는 것은 실제로는 좋지 않습니다. –

+0

죄송합니다. 나는 다른 것을 시도하고 그것을 언급하는 것을 잊어 버렸다. – korrowan

답변

1

두 필드는 NVARCHAR로 저장됩니다. 당신의 before 쿼리로 인해 두 번 orderby있는에 조금 이상한하지만

아니, 그것은 절대적으로 잘해야한다. Take에 대한

인수 당신이 먹고 싶어 얼마나 많은 항목을 말할 수있는 int 수있다. (첫 번째 도랑), 그러나 당신이 가져 오는하고있는 항목은 무엇이든 할 수있다.

+0

아, 알았 으면 좋습니다! 추측하여 다시 쿼리! .take에 MSDN 라이브러리를 잘못 읽었어야합니다. 감사. – korrowan

관련 문제