Run Code
|
API
|
Code Wall
|
Users
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Blog
Rank
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
//Rextester.Program.Main is the entry point for your code. Don't change it. //Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5 using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace Rextester { public static class Program { public static void Main(string[] args) { string[] myNames = new string[] { "Bob", "Mark", "John", "Jim", "Lisa", "Dave" }; var query = myNames.Rank(s => s.Length, (s, r) => new { s, r }); foreach (var x in query) { Console.WriteLine("{0} {1}", x.r, x.s); } } public static IEnumerable<U> Rank<T, TKey, U> ( this IEnumerable<T> source, Func<T, TKey> keySelector, Func<T, int, U> selector ) { if (!source.Any()) { yield break; } int itemCount = 0; T[] ordered = source.OrderBy(keySelector).ToArray(); TKey previous = keySelector(ordered[0]); int rank = 1; foreach (T t in ordered) { itemCount += 1; TKey current = keySelector(t); if (!current.Equals(previous)) { rank = itemCount; } yield return selector(t, rank); previous = current; } } } }
Show compiler warnings
[
+
]
Show input
Compilation time: 0,17 sec, absolute running time: 0,12 sec, cpu time: 0,14 sec, average memory usage: 15 Mb, average nr of threads: 3, absolute service time: 0,34 sec
edit mode
|
history
|
discussion
1 Bob 1 Jim 3 Mark 3 John 3 Lisa 3 Dave
stackse - search stackoverflow differently