Diskuze: c# convert to LINQ

C# .NET .NET (C# a Visual Basic) c# convert to LINQ American English version English version

Avatar
niderle.l
Člen
Avatar
niderle.l:

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 niderle.l
Martin Turner:

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 niderle.l
Petr Nymsa:

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 (czubehead):
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
Why so serious? -Joker
Avatar
niderle.l
Člen
Avatar
 
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.