我有桌子arAbonamenty和arKlienci。 arAbonamnety中的每个项目都与arKlienci相关联。
请查看下面的代码。使用第一个temp_query我可以看到第二个表(arKlienci)中的值,但是如果我在arAbonamenty中对记录进行分组,我就不能引用arKlienci中的项目
var temp_query = from myAbonamenty in myNexo_ARWALEntities.ArAbonamenty
where (myAbonamenty.czy_fa_auto_na_początku_miesiąca == true)
select new
{
klientId=myAbonamenty.id_klient,
klientId_nabywca = myAbonamenty.ArKlienci.Nexo_klient_nabywca,
klientId_odbiorca = myAbonamenty.ArKlienci.Nexo_klient_odbiorca
};
var query = from myAbonamenty in myNexo_ARWALEntities.ArAbonamenty
where (myAbonamenty.czy_fa_auto_na_początku_miesiąca == true)
group myAbonamenty by myAbonamenty.id_klient into myAboGrupowane
select new
{
klientId = myAboGrupowane.Key,
abonament = myAboGrupowane
};
foreach (var AboGrupowane in query)
{
Console.WriteLine(AboGrupowane.klientId);
/// here I want to refer to klientID_nabywca and klientId_odbiorca
foreach (var myAbonamenty in AboGrupowane.abonament)
{
Console.WriteLine(myAbonamenty.Asortymenty.Id);
}
}
我想参考我已发表评论的这些项目。
答案 0 :(得分:0)
假设相同的klientId
意味着相同的ArKlienci
链接,您只需访问其中一个组:
var query = from myAbonamenty in myNexo_ARWALEntities.ArAbonamenty
where (myAbonamenty.czy_fa_auto_na_początku_miesiąca == true)
group myAbonamenty by myAbonamenty.id_klient into myAboGrupowane
let arKlienci = myAboGrupowane.First()
select new
{
klientId = myAboGrupowane.Key,
abonament = myAboGrupowane,
klientId_nabywca = arKlienci.Nexo_klient_nabywca,
klientId_odbiorca = arKlienci.Nexo_klient_odbiorca
};
我使用let
来避免两次调用First
。
答案 1 :(得分:0)
之前的回答帮助我找到了解决方案:
var query = from myAbonamenty in myNexo_ARWALEntities.ArAbonamenty
where (myAbonamenty.czy_fa_auto_na_początku_miesiąca == true)
group myAbonamenty by myAbonamenty.id_klient into myAboGrupowane
let myAboFirst = myAboGrupowane.FirstOrDefault()
select new
{
klientId = myAboGrupowane.Key,
klientId_nabywca = myAboFirst.ArKlienci.Nexo_klient_nabywca,
klientId_odbiorca = myAboFirst.ArKlienci.Nexo_klient_odbiorca,
abonament = myAboGrupowane
};
foreach (var AboGrupowane in query)
{
Console.WriteLine(AboGrupowane.klientId);
Console.WriteLine(AboGrupowane.klientId_nabywca);
foreach (var myAbonamenty in AboGrupowane.abonament)
{
Console.WriteLine(myAbonamenty.Asortymenty.Id);
}
}