私は順序を定義するFunc
のリストを持っていますリストが任意の数の連続した順序を含むことができるときに、上記を行う方法を理解しようとする。出来ますか?LINQのは
Q
LINQのは
5
A
答えて
6
people = people.OrderBy(ordering[0]).ThenBy(ordering[1]).ThenBy(ordering[2]);
はそうあなたは、単にこのようなループを記述
var orderedPeople = people.OrderBy(ordering[0]);
orderedPeople = orderedPeople.ThenBy(ordering[1]);
orderedPeople = orderedPeople.ThenBy(ordering[2]);
people = orderedPeople;
と同じです:
if (ordering.Count != 0)
{
var orderedPeople = people.OrderBy(ordering[0]);
for (int i = 1; i < ordering.Count; i++)
{
orderedPeople = orderedPeople.ThenBy(ordering[i]);
}
people = orderedPeople;
}
0
これは、あなたが式であることを動的に構築する場合に役立ちます。詳細:Dynamic LINQ and Dynamic Lambda expressions?
3
あなたはこの
に似た何かを行うことができるはずpeople = people.OrderBy(ordering[0])
foreach(var order in ordering.Skip(1))
{
people = people.ThenBy(order);
}
al恒等的
for(i = 0; i < ordering.Count; i++)
{
people = i == 0 ? people.OrderBy(ordering[i]) : people.ThenBy(ordering[i]);
}
2
LINQ実行が延期されていることに注意してください。あなたのような何かをして、結果にアクセスする前に表現を順次構築することができます。
var ordered = unordered.OrderBy(ordering.First());
foreach (var orderingItem in ordering.Skip(1))
{
ordered = ordered.ThenBy(orderingItem);
}
4
他の人が述べたように、あなたがこれを行うためにループを使用することができます。あなただけのこと何切り替えた場合、
// Shorter and more "symmetric" but potentially more inefficient.
// x => true should work because OrderBy is a stable sort.
var result = ordering.Aggregate(people.OrderBy(x => true), Enumerable.ThenBy);
+1
私はこれらの簡潔さが好きです、ありがとう – fearofawhackplanet
関連する問題
- 1. LINQは - LINQ
- 2. LINQのヘルプは、私がLINQの次き
- 3. 私は2つのLINQ持ってLINQ
- 4. NHibernateはLINQの
- 5. は、LINQの
- 6. は、LINQの
- 7. フィルターLINQのは
- 8. LINQのは
- 9. は、LINQの式
- 10. LINQのは、コンマ
- 11. LINQのは
- 12. LINQのはGROUPBY
- 13. LINQのは、DELETEは
- 14. LINQは
- 15. LINQは
- 16. LINQは
- 17. LINQは
- 18. は、LINQ
- 19. は、LINQ
- 20. LINQは
- 21. は、LINQ
- 22. は、LINQ
- 23. LINQは
- 24. は、LINQ
- 25. LINQは
- 26. は、LINQのC#の
- 27. LINQのLEFT OUTERは
- 28. LINQのグループはvb.net
- 29. 条件は、LINQの
- 30. LINQのは、WCFサービス
は、あなたが実際のカウントをチェックする必要はありません
(または):あなたが希望する場合
は、あなたも
Aggregate
演算子を使用することができますループで行われました – msarchet私は "同じです"というビットが何らかの理由で真実であったことに気づいていませんでした。私は彼らが直接従わなければならないと思った。どうもありがとう。 – fearofawhackplanet
hmmmm ...実際には同じではありません。 'ThenBy'は' OrderedEnumerable 'で動作します。これは私がどのように覚えているかです。私はそれを回避することができると思う。 –
fearofawhackplanet