How can I generate random alphanumeric strings?

I heard LINQ is the new black, so here’s my attempt using LINQ: private static Random random = new Random(); public static string RandomString(int length) { const string chars = “ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”; return new string(Enumerable.Repeat(chars, length) .Select(s => s[random.Next(s.Length)]).ToArray()); } (Note: The use of the Random class makes this unsuitable for anything security related, such as … Read more

How do I use reflection to call a generic method?

You need to use reflection to get the method to start with, then “construct” it by supplying type arguments with MakeGenericMethod: MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod)); MethodInfo generic = method.MakeGenericMethod(myType); generic.Invoke(this, null); For a static method, pass null as the first argument to Invoke. That’s nothing to do with generic methods – it’s just normal reflection. … Read more

Group by in LINQ

Absolutely – you basically want: var results = from p in persons group p.car by p.PersonId into g select new { PersonId = g.Key, Cars = g.ToList() }; Or as a non-query expression: var results = persons.GroupBy( p => p.PersonId, p => p.car, (key, g) => new { PersonId = key, Cars = g.ToList() }); … Read more

Difference Between Select and SelectMany

SelectMany flattens queries that return lists of lists. For example public class PhoneNumber { public string Number { get; set; } } public class Person { public IEnumerable<PhoneNumber> PhoneNumbers { get; set; } public string Name { get; set; } } IEnumerable<Person> people = new List<Person>(); // Select gets a list of lists of phone … Read more

Multiline string literal in C#

You can use the @ symbol in front of a string to form a verbatim string literal: string query = @”SELECT foo, bar FROM table WHERE id = 42″; You also do not have to escape special characters when you use this method, except for double quotes as shown in Jon Skeet’s answer.

\d less efficient than [0-9]

\d checks all Unicode digits, while [0-9] is limited to these 10 characters. For example, Persian digits, ۱۲۳۴۵۶۷۸۹, are an example of Unicode digits which are matched with \d, but not [0-9]. You can generate a list of all such characters using the following code: var sb = new StringBuilder(); for(UInt16 i = 0; i … Read more