NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
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
Tvůrce
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
Avatar
Petr Čech
Tvůrce
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í
+2,50 Kč
Ř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.