找一个好的Linq to sql 行转列方法【已百度】

crazyxingjc 2011-01-06 11:06:05
数据库数据如下:
一个用餐信息表
字段有:菜谱名称、主食、汤、水果、杂粮、用餐人数、用餐时间


实现效果如下:
根据用餐信息表和当前时间,显示当前一周的用餐信息,用餐人数不显示。


因为不会行专列,现在我用的方法是单个单个的取,在添加到表单里去。纯粹是为了显示下。
想改成行转列的方法,请高人指点迷津。

百度了下,没领悟其中的奥妙,请高人指点。
...全文
1669 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xutianjun 2011-09-14
  • 打赏
  • 举报
回复
sql可以行转列,用pivot就行了。吐血奉献,楼主要给我加分啊
勿说心想 2011-09-14
  • 打赏
  • 举报
回复
不是很明白 如果是一对多呢
crazyxingjc 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lkj7b226 的回复:]
菜谱表里没标识哪个菜是星期几的啊
[/Quote]
图片显示不下了。后面有时间的。
我是先查找出一星期所有的菜谱信息,再来换
q107770540 2011-01-06
  • 打赏
  • 举报
回复
lkj7b226 2011-01-06
  • 打赏
  • 举报
回复
List<obj> returnList=new List<obj>;

foreach(var str in typeNames)
{

var obj= (from p in ObjectContext.BookInfoes
select new
{
星期一=GetNameByType(str,DayOfWeek.Monday),
星期二 = GetNameByType(str, DayOfWeek.Tuesday),
星期三 = GetNameByType(str, DayOfWeek.Wednesday),
星期四 = GetNameByType(str, DayOfWeek.Thursday),
.
.
.

}).FirstOrDefault();
returnList.Add(obj);

lkj7b226 2011-01-06
  • 打赏
  • 举报
回复
楼主提供的数据有限,没有发现到底是哪个字段标识每种菜是星期几上的,我根据自己猜测,给你个思路吧
也不知道行不行
public string GetNameByType(string type,DayOfWeek dw)
{
var obj = (from c in ObjectContext."食谱表"
where c."星期"==dw
select c).FirstOrDefault();
if (type == "主菜")
{
return obj.foodNames;
}
if (type == "主食")
{
return obj.staple_food;
}
if (type == "汤")
{
return obj.soup;
}
.
.
.

}
public void Find()
{
List<string> typeNames = new List<string>();
typeNames.Add("主菜");
typeNames.Add("主食");
typeNames.Add("汤");
.
.
.
foreach(var str in typeNames)
{

var list = from p in ObjectContext.BookInfoes
select new
{
星期一=GetNameByType(str,DayOfWeek.Monday),
星期二 = GetNameByType(str, DayOfWeek.Tuesday),
星期三 = GetNameByType(str, DayOfWeek.Wednesday),
星期四 = GetNameByType(str, DayOfWeek.Thursday),
.
.
.

};
}
}
wanghui0380 2011-01-06
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/aspnet/Pivot.aspx
lkj7b226 2011-01-06
  • 打赏
  • 举报
回复
菜谱表里没标识哪个菜是星期几的啊

8,497

社区成员

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

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