GroupBy在LINQ查询中,具有多对多关系

时间:2017-05-20 23:56:25

标签: c# entity-framework linq concatenation string-concatenation

enter image description here

我需要分组,只看到2行,而row.cell[5]想要查看ПН, СР, ПТ

我应该怎么做concat,或者我一般需要做什么?

 var n = from dog in dbGarbageRemoval.ДоговорSet
                    join zakazchik in dbGarbageRemoval.ЗаказчикSet
                    on dog.КодЗаказчика equals zakazchik.КодЗаказчика into zak
                    join dogovor in dbGarbageRemoval.ДоговорыПереодичныхУслугSet
                    on dog.КодДоговора equals dogovor.КодДоговора into dogperiod
                    join dogovor2 in dbGarbageRemoval.ДоговорыБезПереодичностиУслугSet
                    on dog.КодДоговора equals dogovor2.КодДоговора into dognoperiod
                    from j1 in zak.DefaultIfEmpty()
                    from dp in dogperiod.DefaultIfEmpty()
                    join dni in dbGarbageRemoval.ДоговорыДниНеделиSet
                    on dp.КодДоговора equals dni.КодДоговора into dni2
                    from dni3 in dni2.DefaultIfEmpty()
                    from dp2 in dognoperiod.DefaultIfEmpty()
                    select new
                    {
                        dog.КодДоговора,
                        dog.СтоимостьЗаказа,
                        dog.ДатаЗаключенияДоговора,
                        j1.Фамилия,
                        j1.Имя,
                        j1.Отчество,
                        time = dp2 == null ? ?????????????????? :
                        dp2.ДатаВызова.Day <=9 && dp2.ДатаВызова.Month<=9 ? 
                        "0"+dp2.ДатаВызова.Day+":"+ "0" + dp2.ДатаВызова.Month + ":" + dp2.ДатаВызова.Year + " " + dp2.ВремяВызова.ToString() :
                        dp2.ДатаВызова.Day <= 9 && dp2.ДатаВызова.Month > 9 ? 
                        "0" + dp2.ДатаВызова.Day + ":" + dp2.ДатаВызова.Month + ":" + dp2.ДатаВызова.Year + " " + dp2.ВремяВызова.ToString() :
                        dp2.ДатаВызова.Day > 9 && dp2.ДатаВызова.Month <= 9 ?
                        dp2.ДатаВызова.Day + ":" + "0" + dp2.ДатаВызова.Month + ":" + dp2.ДатаВызова.Year + " " + dp2.ВремяВызова.ToString() :
                        dp2.ДатаВызова.Day + ":" +dp2.ДатаВызова.Month + ":" + dp2.ДатаВызова.Year + " " + dp2.ВремяВызова.ToString()
                    };

1 个答案:

答案 0 :(得分:0)

private string someMethod(string z)
    {
        int num;
        string allDays = z;
        if (Int32.TryParse(z.ToString(), out num))
        {
            allDays = "";
            var linq = from day in dbGarbageRemoval.ДоговорыДниНеделиSet
                       join days in dbGarbageRemoval.ДеньНеделиSet
                       on day.КодДняНедели equals days.КодДняНедели
                       where day.КодДоговора == num
                       select new
                       {
                           days.НазваниеДняНедели
                       };
            foreach (var dayweek in linq)
                allDays += dayweek.НазваниеДняНедели + ",";
            allDays = allDays.Substring(0, allDays.Length - 1);

        }
        return allDays;
    }
var n = (from dog in dbGarbageRemoval.ДоговорSet
                     join zakazchik in dbGarbageRemoval.ЗаказчикSet
                     on dog.КодЗаказчика equals zakazchik.КодЗаказчика into zak
                     join dogovor in dbGarbageRemoval.ДоговорыПереодичныхУслугSet
                     on dog.КодДоговора equals dogovor.КодДоговора into dogperiod
                     join dogovor2 in dbGarbageRemoval.ДоговорыБезПереодичностиУслугSet
                     on dog.КодДоговора equals dogovor2.КодДоговора into dognoperiod
                     from j1 in zak.DefaultIfEmpty()
                     from dp in dogperiod.DefaultIfEmpty()
                     from dp2 in dognoperiod.DefaultIfEmpty()
                     select new
                     {
                         dog.КодДоговора,
                         dog.СтоимостьЗаказа,
                         dog.ДатаЗаключенияДоговора,
                         j1.Фамилия,
                         j1.Имя,
                         j1.Отчество,
                         time = dp2 == null ? dog.КодДоговора.ToString() :
                          dp2.ДатаВызова.Day <= 9 && dp2.ДатаВызова.Month <= 9 ?
                          "0" + dp2.ДатаВызова.Day + ":" + "0" + dp2.ДатаВызова.Month + ":" + dp2.ДатаВызова.Year + " " + dp2.ВремяВызова.ToString() :
                          dp2.ДатаВызова.Day <= 9 && dp2.ДатаВызова.Month > 9 ?
                          "0" + dp2.ДатаВызова.Day + ":" + dp2.ДатаВызова.Month + ":" + dp2.ДатаВызова.Year + " " + dp2.ВремяВызова.ToString() :
                          dp2.ДатаВызова.Day > 9 && dp2.ДатаВызова.Month <= 9 ?
                          dp2.ДатаВызова.Day + ":" + "0" + dp2.ДатаВызова.Month + ":" + dp2.ДатаВызова.Year + " " + dp2.ВремяВызова.ToString() :
                          dp2.ДатаВызова.Day + ":" + dp2.ДатаВызова.Month + ":" + dp2.ДатаВызова.Year + " " + dp2.ВремяВызова.ToString()
                     }).AsEnumerable().Select(x => new {x.КодДоговора, x.СтоимостьЗаказа, x.ДатаЗаключенияДоговора, x.Фамилия, x.Имя, x.Отчество, S = someMethod(x.time).ToString() });
            dgvKnig.DataSource = n.ToList();