2014-05-14 6 views
-9

목록에서 데이터를 가져와야하지만 순서가 좋으면 순서대로 표시되지만이 코드는 제대로 작동하지 않습니다.목록에서 데이터 가져 오기

if (item is TextBoxUniversal) 
{ 
    foreach (string i in itemlist) 
    { 
     ItemValorEntity x = new ItemValorEntity(); 
     x.Item_Id = i[itemIndex].ToString(); 
     strItem = x.Item_Id; 
     itemIndex += 1; 
    } 

    txt.Name = item.Name; 
    txt = GetTexBox(txt.Name, groupBox1); 
    itemValor.Item_Id = strItem; 
    itemValor.cClave = Convert.ToString(cboGTTipoItems.SelectedValue); 
    itemValor.Valor = txt.Text; 
} 

목록에는 101, 102, 103 등 여러 항목이 있습니다. 순서대로 가져와야합니다. 그 코드는 1을 얻을 수 있었다 있지만없는 1 Solucionado

업데이트
if (item is TextBoxUniversal) 
       { 
        string _item = itemlist[itemIndex].ToString(); 
        itemIndex++; 

        txt.Name = item.Name; 
        txt = GetTexBox(txt.Name, groupBox1); 
        itemValor.Item_Id = _item; 
        itemValor.cClave = Convert.ToString(cboGTTipoItems.SelectedValue); 
        itemValor.Valor = txt.Text; 
       } 
+3

어떤 사진에서 어떤 가치가 있습니까? – Magnus

+0

코드가 의미가 없습니다. 나는 심지어 그림을 보지 않는다. 일부 코드가 누락 되었습니까? 무엇을 성취하려고합니까? – BradleyDotNET

+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackoverflow.com/questions/19190/)"를 참조하십시오. 여기서 합의는 "아니오, 그렇지 않아야합니다"입니다. –

답변

2

101

입니다 :

나는 이것이 당신이 찾고있는 무엇을 더 생각 나는 이전의 대답을 제거했다. 받은 목록을 정렬하는 기능. 귀하의 질문에 여전히 열악한 질문이 있으므로 귀하가 암시 한 몇 가지 가정을하겠습니다. 그것들은 다음과 같습니다 :

  • 하드 코드 된 목록을 활용하십시오.
  • 목록을 정렬하십시오.
  • 사용자에게 표시

종류를 살펴보고 싶은 클래스는 List(T).Sort이며 목표를 달성하기 위해 깨끗하고 빠르고 간단하게 접근합니다. 세부 사항은 here입니다.

더 실용적인 시나리오를 사용하려고합니다. 사용자에게 출력하기 전에 점수/성적을 정렬해야하는 일련의 학생들이 있습니다.

시작하려면 Student 개체를 만드십시오.

public class Student 
{ 
    public string Name { get; set; } 
    public int Score { get; set; } 
    public string Grade { get; set; } 
} 

지금까지 우리의 목적은, 그것은 매우 간단 포함합니다 : (그것이)

  • 이름
  • 실제 점수 (숫자 표현)
  • 학년 (문자 표현)

이제 Student 개체에 IComparable<Student>을 구현합니다.

public int CompareTo(Student other) 
{ 
    throw new NotImplementedException(); 
} 

그래서 우리가 방법을 밖으로 Exception를 제거하고 구현하는 것입니다 :

    :

    if(other == null) 
        return 1; 
    
    else 
        return this.Score.CompareTo(other.Score); 
    

    코드의이 작은 금액은 다음을 수행합니다이 암시 적으로 다음과 같은 방법을 구현한다

  • 개체가 null이면 더 커집니다.
  • 우리의 현재 속성과 매개 변수 값을 비교합니다.

이제 우리 모두는 우리의 구현을 위해해야 ​​할 :

// Create Our List 
List<Student> student = new List<Student>(); 

// Add our Students to the List 
student.Add(new Student() { Name = "Greg", Score = 100, Grade = "A+" }); 
student.Add(new Student() { Name = "Kelli", Score = 32, Grade = "F" }); 
student.Add(new Student() { Name = "Jon", Score = 95, Grade = "A" }); 
student.Add(new Student() { Name = "Tina", Score = 93, Grade = "A-" }); 
student.Add(new Student() { Name = "Erik", Score = 82, Grade = "B" }); 
student.Add(new Student() { Name = "Ashley", Score = 75, Grade = "C" }); 

// Apply our Sort. 
student.Sort(); 

// Loop through Our List: 
foreach (Student placement in student) 
    listBox1.Items.Add(placement.Name + " " + placement.Score + " " + placement.Grade); 

그들은 Ascending 순서에 넣어 것이다. 필요한 경우 조정하거나 구성하여 Descending으로 만들거나 더 복잡하게 만들 수 있습니다. 다행히도 이것은 좋은 출발점입니다.

또한 일부 항목은 OrderBy 또는 OrderByDescending에 액세스 할 수 있습니다. 그래서 실제로 코드를 Dictionary에 할 수 있습니다.

student.OrderByDescending(s => s.Value); 

당신은 많은 가능성이 있습니다. 잘하면 당신의 구현에 대해 조금 생각해 볼 수 있습니다.

+0

안녕하세요 그렉, 나는 이미 그 목록을 가지고, 내가 원하는 것은 순서대로 첫 번째 obtendo 인덱스에서 그 값을 검색하는 것입니다. 인덱스 2에서 벗어난 후에이 값을 검색하는 것입니다. 그래서 변수가 int decalarada itemIndex = 0; 색인을 추가하고 다음 색인을 가져올 수 있어야합니다. –

+0

이미 해결되었습니다. 감사합니다. –