LINQ 中的关于group by的有关问题
LINQ 中的关于group by的问题
问题描述:就是从数据库中取出数据,经过group bu之后分组显示
两种方法:
1:建立一个实体数据模型,直接从映射之后的实体类中分组显示(发现了问题)
出现的问题是,记录确实经过了分组,但是foreach之后显示出来的记录都被增加了一倍
为什么????
2:先将数据取出来放到一个我新建好的类中存起来放到list中,然后对list进行分组(没有出现上述问题)
为什么记录会被加倍呢???难道非要先将数据存起来,再重新处理吗,不能直接处理吗
------解决方案--------------------
记录都被增加了一倍 是什么意思?
------解决方案--------------------
var item1 = (from c in entities.Score.ToList() group c by c.ID into g
select new
{
g.Key,
g
});
------解决方案--------------------
照理说 不应该的啊 延迟查询不会导致这样的问题的吧...
------解决方案--------------------
Try:
var item1 = (from c in entities.Score
group c by c.ID into g
select g).ToList();
------解决方案--------------------
你的Score表,是不是没有设置有主键?
------解决方案--------------------
------解决方案--------------------
难道是数据库设计得有问题,存在循环的字段关联?
------解决方案--------------------
也不对,单表操作应该不会。
问题描述:就是从数据库中取出数据,经过group bu之后分组显示
两种方法:
1:建立一个实体数据模型,直接从映射之后的实体类中分组显示(发现了问题)
- C# code
using (studentEntities entities =new studentEntities()) { var item1 = (from c in entities.Score group c by c.ID into g select new { g.Key, g }); foreach (var m in item1) { if (m.Key == "11112") { foreach (var n in m.g) Console.WriteLine(n.ID + " " + n.course + " " + n.score1); } }
出现的问题是,记录确实经过了分组,但是foreach之后显示出来的记录都被增加了一倍
为什么????
2:先将数据取出来放到一个我新建好的类中存起来放到list中,然后对list进行分组(没有出现上述问题)
- C# code
class Program { static void Main(string[] args) { using (studentEntities entities = new studentEntities()) { var v = from u in GetScore() group u by u.Num into g select new { Sss = g.Key, Mdd = g }; foreach (var m in v) { foreach(var n in m.Mdd) Console.WriteLine(n.Num + " " + n.Name + " " + n.Fen); } Console.ReadLine(); } } public static List<ScoreS> GetScore() { List<ScoreS> mylist = null; using (studentEntities entities = new studentEntities()) { var v = from u in entities.Score select new ScoreS { Num = u.ID, Name = u.course, Fen = u.score1 }; mylist = v.ToList(); } return mylist; } }
为什么记录会被加倍呢???难道非要先将数据存起来,再重新处理吗,不能直接处理吗
------解决方案--------------------
记录都被增加了一倍 是什么意思?
------解决方案--------------------
var item1 = (from c in entities.Score.ToList() group c by c.ID into g
select new
{
g.Key,
g
});
------解决方案--------------------
照理说 不应该的啊 延迟查询不会导致这样的问题的吧...
------解决方案--------------------
Try:
var item1 = (from c in entities.Score
group c by c.ID into g
select g).ToList();
------解决方案--------------------
你的Score表,是不是没有设置有主键?
------解决方案--------------------
------解决方案--------------------
难道是数据库设计得有问题,存在循环的字段关联?
------解决方案--------------------
也不对,单表操作应该不会。