Sök  
 
Skribent Inlägget Löst
Google
 
     

  Forum » SQL och Databaser » Hjälp med LINQ  
 
Skriven av: xzzxzz | den 30 augusti 2012 Kl 18:07
Hjälp med LINQ
Hej!

Jag har en tabell som ser ut så här.


CATEGORY
----------------------
ID - INT - PK - AutoIncrease
Titel - Varchar(30)
Parent - Int



Parent är NULL om det är en huvudkategory

Sedan har jag en produkt tabell med en referens till Category.ID.

Det jag behöver hjälp med är att få ut alla produkter under vald kategori och även produkter i underkategorier(kan vara i flera steg).

Antal svar 6




Skriven av: Ostman | den 31 augusti 2012 Kl 12:55
Jag skriver ut alla rader och bygger sedan upp en collection med önskad struktur som kan ha oändligt med underkategorier. Då blir det också snyggare kod när man ska skriva ut listan i html.
Skriven av: XzzXzz | den 31 augusti 2012 Kl 14:19
Förstod inte riktigt =/

Undrar dessutom en annan sak nu.
Har en ListView. I den upprepas en TextBox och en Knapp (o lite annan skit).
det jag undrar är när jag klickar på en av knapparna hur får jag då reda på värdet i textfältet som tillhör knappen ?
Skriven av: Ostman | den 31 augusti 2012 Kl 22:06
Kod:
public class MenuModel
{
  public string header { get; set; }
  public List<MenuModel> children { get; set; }
}
// Hämtar alla menyrader
List<Models.MenuItem> dirtyMenu = Repositories.Menu.PopulateMenu();
List<Models.MenuModel> cleanMenu = new List<Models.MenuModel>();
public ActionResult Index()
{
  // Går igenom alla nivå 1 länkar (dom som har referensID 0)
  foreach (Models.MenuItem item in dirtyMenu.FindAll(p => p.reference.Equals(0)))
  {
  cleanMenu.Add(PopulateMenu(item));
  }
}
// Skriver in informationen i menylistan
Models.MenuModel PopulateMenu(Models.MenuItem row)
{
  Models.MenuModel cleanMenuItem = new Models.MenuModel();
  cleanMenuItem.header = row.header;
  cleanMenuItem.children = new List<Models.MenuModel>();
  // Kollar om det finns någon undermeny
  foreach (Models.MenuItem item in dirtyMenu.FindAll(p => p.reference.Equals(row.id)))
  {
  // Gör samma sak med denna nivå
  cleanMenuItem.children.Add(PopulateMenu(item));
  }
  return cleanMenuItem;
}



I menyklassen kan du ju stoppa in vilka egenskaper du vill, men detta gör att du kan bygga en oändligt stor lista med oändligt många undermenyer.
Skriven av: XzzXzz | den 8 september 2012 Kl 21:18
Har inte riktigt hunnit kolla på din kod ännu =/

Men har en ny fråga.
Hur gör jag för att söka på 2 olika villkor.

Vet inte riktigt hur jag skall förklara detta så blir med ett exempel =)

Kod:
var produkter = from p in DataAccess select p;

if (<SelectedCategory> != NULL)
producter.where(p => p.category == <SelectedCategory>);

if (txtSearch.Text != "")
produkter.where(p => p.Title.contains(txtSearch.Text;



Men som sagt fungerar det ju inte så.
Så hur gör jag detta ?
Skriven av: XzzXzz | den 11 september 2012 Kl 19:29
Ingen ?
Skriven av: vimpyboy | den 11 september 2012 Kl 23:07
Kod:
var data = DataAccess;

if (<SelectedCategory> != NULL)
data = data.Where(p => p.category == <SelectedCategory>);
if (txtSearch.Text != "")
data = data.Where p => p.Title.contains(txtSearch.Text);



Jag antar att din produkter-variabel är en IQueryable<T>, vilket gör att den ändå inte exekveras förrän du faktiskt hämtar datan.

För en liten djupdykning i hur det fungerar så skrev jag en artikel om det för ett par år sedan (den är dock fortfarande aktuell):
http://weblogs.asp.net/mikaelsoderstrom/archive/2009/09/27/f-246-rst-229-expression-trees.aspx
 
     

  Svara på inlägg  
 
Du måste vara medlem på ASPsidan för att kunna skriva i forumet.
För att bli medlem klicka här.
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,2031 sekunder att ladda sidan