|
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
Gewusst wie: Steuern der Sortierung in einer PLINQ-Abfrage
Vorsicht
|
|---|
|
|
var source = Enumerable.Range(9, 10000); // Source is ordered; let's preserve it. var parallelQuery = from num in source.AsParallel().AsOrdered() where num % 3 == 0 select num; // Use foreach to preserve order at execution time. foreach (var v in parallelQuery) Console.Write("{0} ", v); // Some operators expect an ordered source sequence. var lowValues = parallelQuery.Take(10);
// Paste into PLINQDataSample class. static void SimpleOrdering() { var customers = GetCustomers(); // Take the first 20, preserving the original order var firstTwentyCustomers = customers .AsParallel() .AsOrdered() .Take(20); foreach (var c in firstTwentyCustomers) Console.Write("{0} ", c.CustomerID); // All elements in reverse order. var reverseOrder = customers .AsParallel() .AsOrdered() .Reverse(); foreach (var v in reverseOrder) Console.Write("{0} ", v.CustomerID); // Get the element at a specified index. var cust = customers.AsParallel() .AsOrdered() .ElementAt(48); Console.WriteLine("Element #48 is: {0}", cust.CustomerID); }
// Paste into PLINQDataSample class. static void OrderedThenUnordered() { var orders = GetOrders(); var orderDetails = GetOrderDetails(); var q2 = orders.AsParallel() .Where(o => o.OrderDate < DateTime.Parse("07/04/1997")) .Select(o => o) .OrderBy(o => o.CustomerID) // Preserve original ordering for Take operation. .Take(20) .AsUnordered() // Remove ordering constraint to make join faster. .Join( orderDetails.AsParallel(), ord => ord.OrderID, od => od.OrderID, (ord, od) => new { ID = ord.OrderID, Customer = ord.CustomerID, Product = od.ProductID } ) .OrderBy(i => i.Product); // Apply new ordering to final result sequence. foreach (var v in q2) Console.WriteLine("{0} {1} {2}", v.ID, v.Customer, v.Product); }
Vorsicht