wake-up-neo.com

zwei Bedingungen zum Einchecken der where-Klausel unter Verwendung von linq 2-Entitäten

hallo, ich habe eine Tabelle namens Produkte mit Spalten

                 product_id
                 prodcut_name
                 prodcut_price( values like 1200,2000,3000,100)
                 prodcut_desc
                 category_id(1,2,3,.....) 

andere Tabellenkategorien mit Spalten

              category_id(1,2,3.......)
              category_name(a,b,c....)

und Entity-Name lautet dbcontext ...

Wie bekomme ich die Produkte mit dem Kategorienamen "a" und der Produktpreis ist> 500 und <10000

ich benutze Linq, um die Feindseligkeiten ...

würden alle pls auf diesem..einem helfen ....

Danke vielmals....

9
rockyashkumar

Sie suchen nach logischen Operatoren, und diese werden Sie in c # verwenden:

  • && logisch AND
  • || logisch OR
  • ! logisch NOT
  • ^ logisch (bitweise) XOR
  • COND ? TRUE-STATEMENT : FALSE-STATEMENT ternärer Operator 

Ihre zusammengesetzte Bedingung in Pseudo-Code sieht dann folgendermaßen aus:

product_price > 500 AND product_price < 10000

Wenn Sie keinen Fremdschlüssel in der Datenbank haben, werden beim Erstellen des Kontexts jetzt nur DBSets verwendet, und diese verfügen nicht über Navigationseigenschaften. Ihre einzige Option ist also die Antwort von Cubicle.Jockey.

Wenn Sie in der Datenbank Fremdschlüssel haben, haben Sie Navigationseigenschaften für Ihre Entitätsobjekte und Sie können Folgendes tun:

var query = from p in dbcontext.products
where p.category.name == 'a' 
   && p.product_price > 500 
   && p.product_price < 10000
select p;

Alternativ können Sie LINQ-Erweiterungsmethoden direkt verwenden:

  var query = dbcontext.Products.Where(p => p.category.name == 'a' 
                                         && p.product_price > 500 
                                         && p.product_price < 10000);

Wenn Sie eine Liste oder ein Array benötigen und dbcontext schließen möchten, rufen Sie entweder ToList oder ToArray für query auf:

var products = query.ToList();

Es gibt einen alternativen Weg, dies mit Entity Framework (EF) - build-in EntitySQL query - Sprache zu tun. Sie werden einen ähnlichen Ausdruck damit haben:

var query = ProductsQuery.Where("it.Category.Name == 'a' AND it.Product_Price BETWEEN 500 AND 10000");

wobei ProductsQueryObjectQuery<Product> ist.

26
vittore
from p in dbcontext.products
join c in dbcontext.category on p.category_id equals c.category_id
where p.product_price > 500 && p.product_price < 10000 && c.Name == "a"
select p

Dadurch erhalten Sie eine IQueryable mit den gefilterten Ergebnissen.

Basierend auf der untenstehenden Antwort von Vittore wäre dies bei einer Fremdschlüsseleinschränkung die geeignetere Version:

from p in dbcontext.products
where p.category.name =='a' && p.product_price > 500 && p.product_price < 10000
select p;
5
Cubicle.Jockey

verknüpfen Sie die Produkt- und Kategorietabellen in category_id und verwenden Sie eine where, um product_price herauszufiltern.

1
MAK