
List<Tuple<string, string>> tuples = //
var grouped = tuples.GroupBy(t => t.First)
.OrderBy(grp => grp.Key)
.Select(grp => new { Key = grp.Key, Items = grp.OrderBy(t => t.Second) });

List<Tuple<string, string>> tuples = //
var grouped = tuples.GroupBy(t => t.First)
.OrderBy(grp => grp.Key)
.Select(grp => new { Key = grp.Key, Items = grp.OrderBy(t => t.Second) });
List<Tuple<string, string>> tuples = new List<Tuple<string, string>>();
tuples.Add(Tuple.Create("1", "pelefant"));
tuples.Add(Tuple.Create("1", "apa"));
tuples.Add(Tuple.Create("2", "jagular"));
tuples.Add(Tuple.Create("2", "platypus"));
tuples.Add(Tuple.Create("3", "unicorn"));
var result = tuples.GroupBy(x => x.Item1)
.OrderBy(grp => grp.Key)
.Select(grp => new { Key = grp.Key, Items = grp.OrderBy(t => t.Item2) });
foreach(var r in result)
{
foreach (var i in r.Items)
{
Console.WriteLine($"{i}");
}
}
List<Tuple<string, string>> tuples = new List<Tuple<string, string>>();
tuples.Add(Tuple.Create("1", "pelefant"));
tuples.Add(Tuple.Create("1", "apa"));
tuples.Add(Tuple.Create("2", "jagular"));
tuples.Add(Tuple.Create("2", "platypus"));
tuples.Add(Tuple.Create("3", "unicorn"));
Dictionary<string, List<Tuple<string, string>>> groupedTuples = new Dictionary<string, List<Tuple<string, string>>>();
foreach (var tuple in tuples)
{
if (!groupedTuples.ContainsKey(tuple.Item1))
{
groupedTuples[tuple.Item1] = new List<Tuple<string, string>>();
}
groupedTuples[tuple.Item1].Add(tuple);
}
foreach (var key in groupedTuples.Keys.OrderBy(k => k))
{
var sortedTuples = groupedTuples[key].OrderBy(t => t.Item2);
foreach (var tuple in sortedTuples)
{
Console.WriteLine($"{tuple}");
}
}
private MatchOutcomeWithReason GetJobOutcome(MatchJob job)
{
if (job.LooseMatch) return MatchOutcome.Refund.Because(RefundReason.OcrMissing);
if (job.Payments.Any() && job.Invoice.InvoiceState == InvoiceState.Paid) return MatchOutcome.Refund.Because(RefundReason.AlreadyPaid);
if (!job.CanPay) return MatchOutcome.Refund.Because(RefundReason.WrongOrder);
if (job.Invoice.InvoiceState == InvoiceState.Paid) return MatchOutcome.Noop;
if (job.Diff != 0) return MatchOutcome.Deviation;
return MatchOutcome.Paid;
}
private MatchOutcomeWithReason GetJobOutcome(MatchJob job)
{
if (job.LooseMatch) return MatchOutcome.Refund.Because(RefundReason.OcrMissing);
if (job.Payments.Any() && job.Invoice.InvoiceState == InvoiceState.Paid) return MatchOutcome.Refund.Because(RefundReason.AlreadyPaid);
if (!job.CanPay) return MatchOutcome.Refund.Because(RefundReason.WrongOrder);
if (job.Invoice.InvoiceState == InvoiceState.Paid) return MatchOutcome.Noop;
if (job.Diff != 0) return MatchOutcome.Deviation;
return MatchOutcome.Paid;
}
List<Tuple<string, string>> tuples = new List<Tuple<string, string>>();
tuples.Add(Tuple.Create("1", "pelefant"));
tuples.Add(Tuple.Create("1", "apa"));
tuples.Add(Tuple.Create("2", "jagular"));
tuples.Add(Tuple.Create("2", "platypus"));
tuples.Add(Tuple.Create("3", "unicorn"));
var result = tuples.GroupBy(x => x.Item1)
.OrderBy(grp => grp.Key)
.Select(grp => new { Key = grp.Key, Items = grp.OrderBy(t => t.Item2) });
foreach(var r in result)
{
foreach (var i in r.Items)
{
Console.WriteLine($"{i}");
}
}
List<Tuple<string, string>> tuples = new List<Tuple<string, string>>();
tuples.Add(Tuple.Create("1", "pelefant"));
tuples.Add(Tuple.Create("1", "apa"));
tuples.Add(Tuple.Create("2", "jagular"));
tuples.Add(Tuple.Create("2", "platypus"));
tuples.Add(Tuple.Create("3", "unicorn"));
Dictionary<string, List<Tuple<string, string>>> groupedTuples = new Dictionary<string, List<Tuple<string, string>>>();
foreach (var tuple in tuples)
{
if (!groupedTuples.ContainsKey(tuple.Item1))
{
groupedTuples[tuple.Item1] = new List<Tuple<string, string>>();
}
groupedTuples[tuple.Item1].Add(tuple);
}
foreach (var key in groupedTuples.Keys.OrderBy(k => k))
{
var sortedTuples = groupedTuples[key].OrderBy(t => t.Item2);
foreach (var tuple in sortedTuples)
{
Console.WriteLine($"{tuple}");
}
}
private MatchOutcomeWithReason GetJobOutcome(MatchJob job)
{
if (job.LooseMatch) return MatchOutcome.Refund.Because(RefundReason.OcrMissing);
if (job.Payments.Any() && job.Invoice.InvoiceState == InvoiceState.Paid) return MatchOutcome.Refund.Because(RefundReason.AlreadyPaid);
if (!job.CanPay) return MatchOutcome.Refund.Because(RefundReason.WrongOrder);
if (job.Invoice.InvoiceState == InvoiceState.Paid) return MatchOutcome.Noop;
if (job.Diff != 0) return MatchOutcome.Deviation;
return MatchOutcome.Paid;
}
Du måste vara medlem för att kunna kommentera
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106