LINQ-lekérdezések írása a Table szolgáltatáson
A Table service-be linq szintaxissal írhat lekérdezéseket. Az alábbi példák bemutatják, hogyan írhat mintalekérdezéseket a Táblák és entitások lekérdezése, de a LINQ használatával a REST protokoll helyett.
A Table szolgáltatás támogatja az entitások összes tulajdonságát lekérő egyszerű lekérdezések végrehajtását; lehetőség van az entitás tulajdonságainak egy részhalmazának kiválasztására is. A Table szolgáltatás a lekérdezési eredmények operátorral Where
történő szűrését is támogatja, és megadja, hogy hány entitást kell visszaadni az Take
operátor használatával.
A Table service által támogatott LINQ-operátorokkal kapcsolatos részletekért lásd: A Table Service által támogatott lekérdezési operátorok.
Entitás tulajdonságainak kivetítése
A LINQ select
záradék egy entitásból vagy entitásból származó tulajdonságok egy részhalmazának kivetítésére használható. Az előrevetíteni kívánt tulajdonságok maximális száma 255, ami egyben az entitások tulajdonságainak maximális száma is.
Egy entitás tulajdonságainak kivetítéséhez az ügyfélnek támogatnia kell az OData Data Service 3.0-s verzióját, amelyet a vagy MaxDataServiceVersion
a fejlécek megadásával jelezhet az DataServiceVersion
alábbiak szerint:
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Az alábbi példa bemutatja, hogyan projektelhet tulajdonságokat egyetlen entitásból a szükséges objektum-inicializáló használatával:
var query = from entity in dataServiceContext.CreateQuery<SampleEntity>(tableName)
where entity.PartitionKey == "MyPartitionKey"
select new { entity.RowKey };
Az alábbi példa 3 tulajdonságot mutat be egy 10 tulajdonsággal rendelkező entitásból. Ebben a példában a SampleEntity
10 tulajdonság A és J közötti betűkből áll:
IEnumerable<SampleEntity> query = from entity in
dataServiceContext.CreateQuery<SampleEntity>(tableName)
where entity.PartitionKey == "MyPartitionKey"
select new SampleEntity
{
PartitionKey = entity.PartitionKey,
RowKey = entity.RowKey,
A = entity.A,
D = entity.D,
I = entity.I
};
Az entitástulajdonságokat egy standard REST-kérelem $select lekérdezési lehetőségével is kivetítheti. További információ: Lekérdezési entitások.
Az entitásvetületekkel és átalakításokkal kapcsolatos további információkért lásd: Rendszer lekérdezési lehetőség kiválasztása ($select) az OData dokumentációjában.
A felső n entitás visszaadása
Entitások visszaadásához n
használja a LINQ Take
operátort. Vegye figyelembe, hogy az egyetlen lekérdezésben visszaadható entitások maximális száma 1000. Ha 1000-nél nagyobb értéket ad meg az operátorhoz, a Take
400-ás hibakód jelenik meg (hibás kérés).
Az alábbi példa a Vevők tábla 10 legnagyobb entitását adja vissza:
var query = (from entity in context.CreateQuery<Customer>("Top10Customers")
select entity).Take(10);
Szűrés sztringtulajdonságokra
Az alábbi példa két sztringtulajdonságra szűr:
var query = from entity in context.CreateQuery<Customer>("SpecificCustomer")
where entity.LastName.Equals("Smith")
&& entity.FirstName.Equals("John")
select entity;
Az alábbi példa összehasonlító operátorok használatával végez előtag-egyeztetést az "A" betűvel kezdődő tulajdonságú LastName
entitások visszaadásához:
var query = from entity in context.CreateQuery<Customer>("CustomersA")
where entity.LastName.CompareTo("A") >= 0
&& entity.LastName.CompareTo("B") < 0
select entity;
Szűrés numerikus tulajdonságok alapján
Az alábbi példa az összes olyan tulajdonsággal rendelkező Age
entitást adja vissza, amelynek értéke nagyobb, mint 30:
var query = from entity in context.CreateQuery<Customer>("CustomersOver30")
where entity.Age > 30
select entity;
Ez a példa az összes olyan tulajdonsággal rendelkező AmountDue
entitást adja vissza, amelynek értéke kisebb vagy egyenlő 100,25-nél:
var query = from entity in context.CreateQuery<Customer>("CustomersAmountDue")
where entity.AmountDue <= 100.25
select entity;
Szűrés logikai tulajdonságok alapján
Az alábbi példa az összes olyan entitást visszaadja, ahol a IsActive
tulajdonság értéke true
:
var query = from entity in context.CreateQuery<Customer>("ActiveCustomers")
where entity.IsActive == true
select entity;
Szűrés DateTime-tulajdonságok alapján
Az alábbi példa olyan entitásokat ad vissza, amelyekben a CustomerSince
tulajdonság értéke 2008. július 10.:
DateTime dt = new DateTime(2008, 7, 10);
var query = from entity in context.CreateQuery<Customer>("CustomerSince")
where entity.CustomerSince.Equals(dt)
select entity;
Lásd még:
Táblák és entitások lekérdezése
A Table Service által támogatott lekérdezési operátorok