IIncludes.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. 
  2. List<int> sourceNumbers = new List<int> { 2, 4, 8, 16, 32, 64, 128 };
  3. var ram = new Random();
  4. foreach (var source in sourceNumbers)
  5. {
  6. var index = sourceNumbers.IndexOf(source) + 1;
  7. //Console.WriteLine("index=" + index);
  8. List<List<Test>> result = new List<List<Test>>();
  9. string sb = "";
  10. List<string> sb2 = new List<string>();
  11. for (int i = 1; i <= source; i++)
  12. {
  13. List<Test> test = new List<Test>();
  14. List<Test> test2 = new List<Test>();
  15. for (int j = 1; j <= index; j++)
  16. {
  17. test2.Add(new Test() { i = j, b = ram.Next(1, 222) % 2 == 0 });
  18. sb += $"[{test2.Last().b}:{test2.Last().i}]";
  19. //sb2 += $"[{test2.Last().b}:{test2.Last().i}]";
  20. if (j == index)
  21. {
  22. if (sb2.Count > 0 && sb2.Contains(sb))
  23. {
  24. j = 0;
  25. sb = "";
  26. test2 = new List<Test>();
  27. }
  28. else
  29. {
  30. test.AddRange(test2.Select(x => new Test { b = x.b, i = x.i }));
  31. sb2.Add(sb);
  32. sb = "";
  33. }
  34. }
  35. }
  36. test = test.OrderBy(it => it.i).ToList();
  37. result.Add(test);
  38. }
  39. foreach (var test in result)
  40. {
  41. List<string> res = new List<string>();
  42. List<string> res2 = new List<string>();
  43. foreach (var item in test)
  44. {
  45. if (item.i == 1)
  46. {
  47. if (item.b == false)
  48. {
  49. res.Add($"Expression<Func<T, List<TReturn{item.i }>>> include{item.i}");
  50. }
  51. else
  52. {
  53. res.Add($"Expression<Func<T, TReturn{item.i }>> include{item.i}");
  54. }
  55. }
  56. else
  57. {
  58. if (item.b == false)
  59. {
  60. res.Add($"Expression<Func<TReturn{item.i - 1}, List<TReturn{item.i }>>> include{item.i}");
  61. }
  62. else
  63. {
  64. res.Add($"Expression<Func<TReturn{item.i - 1}, TReturn{item.i }>> include{item.i}");
  65. }
  66. }
  67. res2.Add("TReturn" + (item.i));
  68. }
  69. Console.WriteLine($"ISugarQueryable<T> Includes<{string.Join(",", res2)}>({string.Join(",", res)});");
  70. }
  71. //Console.WriteLine("--");
  72. }
  73. Console.ReadKey();
  74. public class Test
  75. {
  76. public bool b { get; set; }
  77. public int i { get; set; }
  78. }
  79. //1:1 true
  80. //2:
  81. // 1 true , 2 true
  82. // 1 false , 2 true
  83. //3:
  84. // 1 true , 2 true 3 true
  85. // 1 true , 2 false 3 true
  86. // 1 false , 2 false 3 true
  87. // 1 false , 2 true 3 true