linq在列表中找到我的对象是哪个位置[英] linq find in which position is my object in List

本文是小编为大家收集整理的关于linq在列表中找到我的对象是哪个位置的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

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>中的哪个位置?我现在需要在第一个,第二,...

推荐答案

使用 IndexOf 方法: p>

kriteriji.IndexOf(doc);

其他推荐答案

您可以使用超载进行选择,该索引和Kriteriji.

这是文档.

然后,您可以选择具有索引属性和DOC属性的匿名对象.如果您使用索引,这将在您已经拥有该数据时在整个列表中引起另一个搜索.

其他推荐答案

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

本文地址:https://www.itbaoku.cn/post/1556969.html

问题描述

kriteriji is type of 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();

Now when I get doc how can I know in which position in List<kriteriji> is? I need to now if is in first, second,...

推荐答案

Use the IndexOf method:

kriteriji.IndexOf(doc);

其他推荐答案

You can use an overload for select that will take an index and a Kriteriji.

Here is the documentation.

Then you could select an anonymous object with an Index property and a Doc property. If you would use IndexOf this will cause another search throughout the list while you already have that data.

其他推荐答案

I think you could create a (index , value) keyvaluepaire object at first and then retrive it like

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

then you could get the index like

Console.WriteLine(doc.index);