所需的LINQ查询解决方案 [英] LINQ query solution required

查看:65
本文介绍了所需的LINQ查询解决方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正努力获得以下LINQ解决方案.如果您能帮助我,将不胜感激.

以下是我的表结构

BatteryMaster:

I am struggling to get following LINQ solution. and will be grateful if you helps me.

Following is my table structure

BatteryMaster:

BatteryID SerialNo 
1         1111111
2         2222222
3         3333334
4         5421354
5         8975465
6         8754654
7         8746541
8         7777777
9         9987542
10        5744444
11        5687897




BatteryGroup:




BatteryGroup:

GroupID BatteryID1 BatteryID2 BatteryID3 BatteryID4 GroupName
1       1          5          6          10          Group1
2       11         2          3          4           Group2




每个电池组包含4个电池.
一旦电池成为任何组的一部分,将无法再次使用.

现在,我想编写一个LINQ查询以显示以下数据




Each battery group contains 4 battries.
Once a battery is a part of any group that cannot be used again.

Now I want to write a LINQ query to show following data

BatteryID SerialNo GroupName
1         1111111  Group1
2         2222222  Group2
3         3333334  Group2
4         5451354  Group2
5         8975465  Group1
6         8754954  Group1
7         8746541  NA
8         7777777  NA
9         9987542  NA
10        5744444  Group1
11        5687897  Group2



请不要建议我更改表结构,因为我不能这样做.

提前致谢.
〜Amol



Please don''t suggest me to change table structure because I cannot do that.

Thanks in advance.
~Amol

推荐答案

from b in Context.BatteryMaster
join c in Context.BatteryGroup on 
(b.BatteryID==c.BatteryID1 or
b.BatteryID==c.BatteryID2 or
b.BatteryID==c.BatteryID3 or
b.BatteryID==c.BatteryID4)   
select new 
{
    BatteryID = b.BatteryID,
    SerialNo = b.SerialNo,
    GroupName = c.GroupName
};



希望有帮助.



Hope this help.


非常感谢你们的辛勤劳动,
我找到了解决方案.
Thanks a lot guys for all your efforts,
I got my solution.
var BatteryInfo =
         (from objBatteryMaster in objDataContext.Battery_Masters
          join
                objVehicle in objDataContext.Vehicle_Masters on objBatteryMaster.Battery_ID equals
                objVehicle.Battery_ID
           into D_V_M
          join
               objB1 in objDataContext.Battery_Groups on objBatteryMaster.Battery_ID equals
               objB1.Battery_ID1
          into B1
          join
               objB2 in objDataContext.Battery_Groups on objBatteryMaster.Battery_ID equals
               objB2.Battery_ID2
          into B2
          join
               objB3 in objDataContext.Battery_Groups on objBatteryMaster.Battery_ID equals
               objB3.Battery_ID3
          into B3
          join
               objB4 in objDataContext.Battery_Groups on objBatteryMaster.Battery_ID equals
               objB4.Battery_ID4
          into B4
          from objVehicle in D_V_M.DefaultIfEmpty()
          from objB1 in B1.DefaultIfEmpty()
          from objB2 in B2.DefaultIfEmpty()
          from objB3 in B3.DefaultIfEmpty()
          from objB4 in B4.DefaultIfEmpty()
          orderby strSortExpression
          select new
          {
              objBatteryMaster.Battery_ID,
              objBatteryMaster.Serial_Number,
              objBatteryMaster.Purchase_Date,
              objBatteryMaster.Battery_Type.Battery_Type_Name,
              objBatteryMaster.Description,
              objBatteryMaster.Expiry_Date,
              objBatteryMaster.Battery_Type.Battery_Power,
              objVehicle.Vin_Number,
              VehicleStatus = objVehicle.Status.Status_Name,
              BatteryStatus = objBatteryMaster.Status.Status_Name,
              G1 = objB1.Battery_Group_Name,
              G2 = objB2.Battery_Group_Name,
              G3 = objB3.Battery_Group_Name,
              G4 = objB4.Battery_Group_Name,
              GroupName = objB1.Battery_Group_Name != null ? objB1.Battery_Group_Name :
                            objB2.Battery_Group_Name != null ? objB2.Battery_Group_Name :
                            objB3.Battery_Group_Name != null ? objB3.Battery_Group_Name :
                            objB4.Battery_Group_Name != null ? objB4.Battery_Group_Name : "NA"
          });


基本上,任何内部联接或外部联接语句中用or分隔的内部都不能有多个条件.

再次感谢
〜Amol


Basically you cannot have multiple conditions inside any inner join or outer join statements separated by or.

Thanks again
~Amol


这篇关于所需的LINQ查询解决方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆