2011-11-21 2 views
1

kriteriji 내 객체 인에서 찾을 내가 doc을 얻을 때 List<Kriteriji>LINQ 위치 목록

var doc = kriteriji.Where(k => k.Ean == txtEan.Text 
        && k.PredmetObravnave == acPredmetObravnave.Text 
        && k.Tse == txtTse.Text 
        && k.DejanskaKolicina == Convert.ToInt32(txtKolicina.Text) 
        && k.KratekNazEnoteMere == acKNEnotaMere.Text 
        && k.OznakaLokacije == acOznakaLokacije.Text 
        && k.OznakaZapore == txtZapora.Text 
        && k.SarzaDob == txtSarzaDobavitelja.Text 
        && k.Sarza == txtSarza.Text 
        && k.DatumVelOd == datumOd 
        && k.DatumVelDo == datumDo).FirstOrDefault(); 

의 종류 지금 어떻게 List<kriteriji>에있는 위치가에 알 수있다? 지금은 첫 번째, 두 번째, ...에 있어야합니다.

답변

3

인덱스와 Kriteriji를 사용하는 select에 과부하를 사용할 수 있습니다.

여기는 documentation입니다.

그런 다음 색인 속성과 Doc 속성으로 익명 개체를 선택할 수 있습니다. IndexOf를 사용하면 이미 해당 데이터가있는 동안 목록 전체에서 다른 검색이 발생합니다. ,

var position = kriteriji.IndexOf(doc); 
0

당신은에 인덱스를 찾을 수 있습니다 값) keyvaluepaire 객체를 먼저 가져온 다음

처럼 다시 검색하십시오.
 var doc = kriteriji.Select((value, index) => new { index, value }) 
      .Where(k => k.value.Ean == txtEan.Text 
       && k.value.PredmetObravnave == acPredmetObravnave.Text 
       && k.value.Tse == txtTse.Text 
       && k.value.DejanskaKolicina == Convert.ToInt32(txtKolicina.Text) 
       && k.value.KratekNazEnoteMere == acKNEnotaMere.Text 
       && k.value.OznakaLokacije == acOznakaLokacije.Text 
       && k.value.OznakaZapore == txtZapora.Text 
       && k.value.SarzaDob == txtSarzaDobavitelja.Text 
       && k.value.Sarza == txtSarza.Text 
       && k.value.DatumVelOd == datumOd 
       && k.value.DatumVelDo == datumDo).FirstOrDefault(); 

는 당신은

Console.WriteLine(doc.index); 
그것은하지 doc.First()처럼 보이는
+1

하지만 doc 같은 인덱스를 얻을 수 있습니다 - 그것은 반환의 문서가 한 요소가 아니라 모음입니다 때문에 – Vitaliy

1

이 시도 :

kriteriji.IndexOf(doc.First()); 
3

나는 당신이 (인덱스를 만들 수 있다고 생각 :

kriteriji.IndexOf(doc);