linq找到我在List中的对象的位置

时间:2011-11-21 08:44:20

标签: c# linq position

kriteriji是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 个答案:

答案 0 :(得分:3)

您可以使用重载来获取索引和Kriteriji。

这是documentation

然后,您可以选择具有Index属性和Doc属性的匿名对象。如果您使用IndexOf,这将导致您已经拥有该数据时在整个列表中进行另一次搜索。

答案 1 :(得分:3)

我认为您可以先创建一个(索引,值)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);

答案 2 :(得分:1)

使用IndexOf方法:

kriteriji.IndexOf(doc);

答案 3 :(得分:1)

试试这个:

var position = kriteriji.IndexOf(doc);

答案 4 :(得分:0)

您可以通过以下方式找到索引:

kriteriji.IndexOf(doc.First());