有没有办法让where条件变为可选

IE11下面经常卡到爆 2011-04-22 04:09:45
//下面是目前的办法
//当((int.TryParse(dishID, out menuId) && menuId > 0)条件不满足时,直接join返回
//否则约束条件where cook.menuId == menuId
var cookData = from cook in cookList join annote in annotateL on cook.noteId equals annote.id where
((int.TryParse(dishID, out menuId) && menuId > 0) ? cook.menuId == menuId : cook.menuId > 0)
select new { cook, annote.name
};
if (cookData != null && cookData.Count() > 0)
{
List<CookMethod> cookMethodList = new List<CookMethod>(cookData.Count());
foreach (var cookdata in cookData)
{
CookMethod cm = new CookMethod();
cm.ID = cookdata.cook.noteId;
cm.DishID = cookdata.cook.menuId;
cm.Content = cookdata.name;
cookMethodList.Add(cm);
}
return cookMethodList;
}

需求:有没有简单办法实现类似,数据不在数据库中,无法使用SQL
Type cookData;
if(条件)
cookData = select new {};
esle
cookData = where .. select new {};
想过:var cookData = from...join on..select new {};
if(条件 && cookData != null)
cookData = cookData.Where(cd => cd.cook.menuId == menuId); 但是这样join之后再where感觉有点傻
...全文
95 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
刚又想了下,自己绕进去了

var cookData = (int.TryParse(dishID, out menuId) && menuId > 0)
? (from cook in cookList join annote in annotateL on cook.noteId equals annote.id where cook.menuId == menuId select new { cook, annote.name })
: (from cook in cookList join annote in annotateL on cook.noteId equals annote.id select new { cook, annote.name });

这样就可以了
teddy000 2011-04-22
  • 打赏
  • 举报
回复
when.

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧