linq найти, в каком положении находится мой объект в списке

Критерий является типом List<Kriteriji>

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();

Теперь, когда я получаю doc как я могу узнать, в каком положении List<kriteriji> является? Мне нужно сейчас, если есть во-первых, во-вторых,...

5 ответов

Решение

Использовать IndexOf метод:

kriteriji.IndexOf(doc);

Вы можете использовать перегрузку для выбора, которая будет принимать индекс и критерий.

Вот документация.

Затем вы можете выбрать анонимный объект со свойством Index и свойством Doc. Если вы используете IndexOf, это вызовет другой поиск по всему списку, пока у вас уже есть эти данные.

Я думаю, что вы могли бы сначала создать объект (значение, значение) 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);

Попробуй это:

var position = kriteriji.IndexOf(doc);

Вы можете узнать индекс с:

kriteriji.IndexOf(doc.First());
Другие вопросы по тегам