Avatar billede flashit Nybegynder
12. april 2008 - 12:22 Der er 5 kommentarer og
1 løsning

LINQ Substring eller

Hej e.

Jeg har denne linq.
string SearchResult = Request.QueryString["Search"];
                    var q = from p in db.NormalPages
                            join menuItem in db.MenuItems on p.ParrentID equals menuItem.ID
                            where SqlMethods.Like(p.Title, "%" + SearchResult + "%") || SqlMethods.Like(p.PageContent, "%" + SearchResult + "%") && p.Deleted == false && p.StartDate <= DateTime.Now && p.EndDate >= DateTime.Now
                            orderby p.CreatedDate descending
                            select new { p.Title, p.PageContent, menuItem.URL, p.ID };

Jeg vil gørne gøre således at p.PageContent kun retunere 100 karaktere.
Har prvøvet med p.PageContent.Sunscring(0,100) men det virker ikke.
Er her en som ved hvordan man kan gøre dette??

/Jakob
Avatar billede nielle Nybegynder
12. april 2008 - 13:13 #1
Det er jo bare ikke et problem der har noget med LINQ at gøre.

Det skyldes at du ikke kan tage Substring på en streng som er kortere end det man vil slære den af til i længde. En måde at løse dette på er ved følgende opslrift:

(p.PageContent.Length >= 100) ? p.PageContent.Substring(0, 100) : p.PageContent

Indsat i din LINQ bliver det til:


string SearchResult = Request.QueryString["Search"];
var q = from p in db.NormalPages
    join menuItem in db.MenuItems on p.ParrentID equals menuItem.ID
    where
        (
            SqlMethods.Like(p.Title, "%" + SearchResult + "%") ||
            SqlMethods.Like(p.PageContent, "%" + SearchResult + "%")
        ) &&
        p.Deleted == false &&
        p.StartDate <= DateTime.Now &&
        p.EndDate >= DateTime.Now
    orderby p.CreatedDate descending
    select new { p.Title, (p.PageContent.Length >= 100) ? p.PageContent.Substring(0, 100) : p.PageContent, menuItem.URL, p.ID };



PS: Jeg har i øvrigt sat en parentes om || leddet.
Avatar billede flashit Nybegynder
12. april 2008 - 13:32 #2
Hej nielle

Der kommer følgende fejl:
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
Avatar billede nielle Nybegynder
12. april 2008 - 13:43 #3
Prøv med:

select new { p.Title, PContent = (p.PageContent.Length >= 100) ? p.PageContent.Substring(0, 100) : p.PageContent, menuItem.URL, p.ID };
Avatar billede flashit Nybegynder
12. april 2008 - 14:07 #4
virker perfekt. Mange tak :-) og så lige et svar
Avatar billede nielle Nybegynder
12. april 2008 - 14:12 #5
Svar :^)
Avatar billede flashit Nybegynder
12. april 2008 - 14:13 #6
tak igen igen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester