Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se C a C++. Zároveň využij akce až 80 % zdarma při nákupu e-learningu - více informací.
c++ week

Diskuze: c# convert to LINQ

Aktivity
Avatar
Ladislav Niderle:11.4.2016 10:29

AHoj, mohl by mi prosím někdo poradit jak správně přepsat foreach v daném případě na dotaz za pomocí LINQ?

private string GetCestaKDatum(string hledam)
        {
            string str = null;

            //str = LoadRunData.Where(u => u.Name == hledam).Select(u => u.Drive).ToString();

            foreach (var record in LoadRunData)
            {
                if (record.Name==hledam)
                {
                    str = record.Drive;
                }
            return str;
            }

Už jsem se o to snažil jak je vidět, ale z nějakého důvodu mi to vrátilo objekt místo stringu. Jinak jedná se list objektu, kde jsou jenom stringy, kde jeden porovnávám a druhý se snažím najít.

Předem moc děkuji za odpověď

 
Odpovědět
11.4.2016 10:29
Avatar
Odpovídá na Ladislav Niderle
Martin Turner:11.4.2016 12:48

Ahoj,

nejsem v LINQ moc zběhlý, ale mám pocit, že tvůj LINQ dotaz (bez ToString()) vrací nějaký typ kolekce, i když je výsledek jen jeden. Asi i proto se pro LINQ dotazy doporučuje používat typ var.
Zkusil bych to takhle:

var dotaz = LoadRunData.Where(u => u.Name == hledam).Select(u => u.Drive);
foreach(var i in dotaz)
{
        string str = i.Drive.ToString();
}

Dej prosím vědět, jestli Ti to pomohlo. :-)

 
Nahoru Odpovědět
11.4.2016 12:48
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Ladislav Niderle
Petr Nymsa:11.4.2016 16:29

SELECT ti vrátí množinu, pokud chceš unikátní případně první, použij First nebo Find.

Nahoru Odpovědět
11.4.2016 16:29
Pokrok nezastavíš, neusni a jdi s ním vpřed
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Petr Čech
Redaktor
Avatar
Petr Čech:11.4.2016 17:06
return LoadRunData.First(r=>r.Name==hledam).Drive;
Editováno 11.4.2016 17:06
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
11.4.2016 17:06
the cake is a lie
Avatar
Odpovídá na Petr Čech
Ladislav Niderle:11.4.2016 17:49

Už mi to funguje. Děkuji

 
Nahoru Odpovědět
11.4.2016 17:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.