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 ответов
Решение
Вы можете использовать перегрузку для выбора, которая будет принимать индекс и критерий.
Вот документация.
Затем вы можете выбрать анонимный объект со свойством 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);