Допустим, у меня есть следующая таблица с именем TableSomeWords
:
А затем еще одна таблица с именем SomePerson
(это главная таблица)
Я хочу достичь следующего результата (поэтому все миры объединены в одно предложение):
Единственная проблема в том, что невозможно заранее определить, сколько слов будет в TableSomeWords
.Вот что у меня сейчас:
var storedProcedure =
from hdr in SomePerson
join cl in TableSomeWords on hdr.No_ equals cl.No_
group new { hdr, cl } by new { hdr.No_ } into tcl
let firstgroupby = tcl.FirstOrDefault()
let hdr = firstgroupby.hdr
let cl = firstgroupby.cl
join wml in lManLine on new { X1 = hdr.Document_Type, X2 = hdr.Business_Type, X3 = hdr.No_ } equals new { X1 = wml.Document_Type, X2 = wml.Business_Type, X3 = wml.Document_No_ }
join v in lVendor on wml.Carrier_No_ equals v.No_
where
wml.Service_Type == 3 &&
wml.Location_Code == locationCode &&
(
(hdr.Document_Type == 1 && hdr.Task_Date < DateTime.Now.AddYears(-100)) ||
(new int[] { 1, 5 }.Contains(hdr.Document_Type) && (hdr.Task_Date.Date >= fromDate.Date && hdr.Task_Date < fromDate.AddDays(7)))
)
select new
{
//ID = ...
//Code = ...
//Name = ...
Words= string.Join(" ", TableSomeWords.Where(x => x.No_ == hdr.No_ && x.Code == "CompanyX").OrderBy(x => x.No_).ThenBy(x => x.Line_No_).GroupBy(t => t.No_).ToList()),
}
PS: Мой код не работает, но, по крайней мере, он немного объясняет, к чему я стремлюсь.Я также не могу вставить последний .Where
в мое предложение where, потому что это вернет мои единственные строки, где code = CompanyX, но я хочу, чтобы все люди были показаны.
EDIT: в основном CompanyX (x.Code
) - это код каждого слова.Так что в основном у меня много слов со многими кодами, но я хочу только объединить слова, которые имеют код CompanyX.А другой код, такой как C001, - это другой код, по которому я могу просто сгруппировать (hdr.No_
)