我創建了一個快速控制檯應用程序,它創建10000個年輕人和10000個老年人,並將它們添加到兩個單獨的列表中。然後,我會根據個性進行一些查詢以獲取信息。使用列表和Linq,編寫高效的代碼
class Program
{
static void Main(string[] args)
{
private Random random = new Random();
private List<Person> youngerPersons = new List<Person>();
private List<Person> olderPersons = new List<Person>();
private long samePersonalityMatches = 0;
for (int i = 0; i < 10000; i++)
{
youngerPersons.Add(new Person(RandomString(10), DateTime.Now.ToString(), RandomString(4), random.Next(10, 50),(Person.PersonalityType)random.Next(0, 4), i));
}
for (int i = 0; i < 10000; i++)
{
olderPersons.Add(new Person(RandomString(10), DateTime.Now.ToString(), RandomString(4), random.Next(51, 120),(Person.PersonalityType)random.Next(0, 4), i));
}
//Example query 1
foreach (Person person in youngerPersons.Where(w => w.Id > 4567 && w.Age > 70))
{
Console.WriteLine(person.Id);
}
//Example query 2
foreach (Person person in youngerPersons)
{
foreach (Person olderPerson in olderPersons)
{
if (person.Personality == olderPerson.Personality)
{
samePersonalityMatches++;
}
}
}
Console.WriteLine("Number of matches: " + samePersonalityMatches);
}
private static Random random = new Random((int)DateTime.Now.Ticks);
private static string RandomString(int size)
{
StringBuilder builder = new StringBuilder();
char ch;
for (int i = 0; i < size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(ch);
}
return builder.ToString();
}
}
internal class Person
{
public enum PersonalityType
{
Funny = 0,
Boring = 1,
Serious = 2,
Grumpy = 3,
Normal = 4
}
public Person(string name, string dateofbirth, string nickname, int age, PersonalityType personalityType, int id)
{
this.Name = name;
this.Dateofbirth = dateofbirth;
this.Nickname = nickname;
this.Age = age;
this.Id = id;
this.Personality = personalityType;
}
public string Name { get; set; }
public string Dateofbirth { get; set; }
public string Nickname { get; set; }
public int Age { get; set; }
public int Id { get; set; }
public PersonalityType Personality { get; set; }
}
基本上,我想了解最佳實踐,以獲得性能最高的兩個示例查詢我放在代碼中。我已經閱讀了一些關於使用相交的性能相關材料,但我不確定哪個和何時最適合用來獲得最佳性能。這些列表有點OTT(大小明智),但它讓示例兩個更有趣的運行。
一個連接做同樣的事情,並且簡單得多... –
連接*是*相同的東西。我正在教育學。 – jason