【】LINQ GROUP 查询中 WHERE条件的动态拼接有关问题
【高手指点】LINQ GROUP 查询中 WHERE条件的动态拼接问题
下面的LINQ 中 WHERE 条件中 有3个条件 这3个条件不是必须的,如果某个条件的值为0 应该取消这个条件 我尝试了多次,不知道如何能够实现动态
( 比如以前 可以用
if(id!=0)
querey = query.where(m=>m.id == id)
)
但是 当前查询我没能实现。
请看的懂的高手指点一下
------解决思路----------------------
try this:
------解决思路----------------------
人家用的是join,你不要光看见3个where
你在一个条件里写逻辑与,那不是任何一个如果是false,就3个条件都判断为不满足了吗
下面的LINQ 中 WHERE 条件中 有3个条件 这3个条件不是必须的,如果某个条件的值为0 应该取消这个条件 我尝试了多次,不知道如何能够实现动态
( 比如以前 可以用
if(id!=0)
querey = query.where(m=>m.id == id)
)
但是 当前查询我没能实现。
请看的懂的高手指点一下
var query = from gift in this.Entities
join giftHoliday in GiftWithHolidayDB.Entities on gift.ID equals giftHoliday.Gift_ID into join_holiday
from jh in join_holiday.DefaultIfEmpty()
join giftTarget in GiftWithTargetDB.Entities on gift.ID equals giftTarget.Gift_ID into join_target
from jt in join_target.DefaultIfEmpty()
join giftCategory in GiftWithCategoryDB.Entities on gift.ID equals giftCategory.Gift_ID into join_category
from jc in join_category.DefaultIfEmpty()
where jh.Holiday_ID == holiday_ID && jt.GiftTarget_ID == giftTarget_ID && jc.GiftCategory_ID == giftCategory_ID
group gift by new
{
ID = gift.ID,
Introduction = gift.Introduction,
Price = gift.Price,
Name = gift.Name
} into groupGift
select new
{
ID = groupGift.Key.ID,
Introduction = groupGift.Key.Introduction,
Price = groupGift.Key.Price,
Name = groupGift.Key.Name
};
------解决思路----------------------
try this:
var query = from gift in this.Entities
join giftHoliday in GiftWithHolidayDB.Entities on gift.ID equals giftHoliday.Gift_ID into join_holiday
from jh in join_holiday.DefaultIfEmpty()
where holiday_ID>0?jh.Holiday_ID == holiday_ID:true
join giftTarget in GiftWithTargetDB.Entities on gift.ID equals giftTarget.Gift_ID into join_target
from jt in join_target.DefaultIfEmpty()
where giftTarget_ID>0?jt.GiftTarget_ID == giftTarget_ID:true
join giftCategory in GiftWithCategoryDB.Entities on gift.ID equals giftCategory.Gift_ID into join_category
from jc in join_category.DefaultIfEmpty()
where giftCategory_ID>0?jjc.GiftCategory_ID == giftCategory_ID:true
group gift by new
{
ID = gift.ID,
Introduction = gift.Introduction,
Price = gift.Price,
Name = gift.Name
} into groupGift
select new
{
ID = groupGift.Key.ID,
Introduction = groupGift.Key.Introduction,
Price = groupGift.Key.Price,
Name = groupGift.Key.Name
};
------解决思路----------------------
人家用的是join,你不要光看见3个where
你在一个条件里写逻辑与,那不是任何一个如果是false,就3个条件都判断为不满足了吗