【问题标题】:Query syntax in entity framework实体框架中的查询语法
【发布时间】:2015-05-09 14:06:01
【问题描述】:

我正在查询(见下文),但我不知道如何从选择中检索所有数据。

var model = new dbContext();
var query = from mp in model.matiere_premiere join req in (from stk in model.stock_mp
                         join ms in model.matiere_premiere
                         on stk.matiere_premiere_code equals
                         ms.code
                         where stk.date <= DateTime.Today
                         orderby stk.date descending
                         select new new { stk.qte, stk.matiere_premiere_code })
                    on mp.code equals req.matiere_premiere_code
                    group mp by new { mp.code } into grp
                    orderby grp.Key
                    select new
                    {
                        grp.Key,
                        grp.First().designation,
                        grp.Last().frns

                    };

等价的sql查询为:

SELECT matiere_premiere.code,matiere_premiere.designation,
        "matiere_premiere.unite, matiere_premiere.frns ,IF(ISNULL(REQ.qte), '0.00', REQ.qte) AS qte
      FROM matiere_premiere  LEFT JOIN (SELECT qte,matiere_premiere_code FROM stock_mp
        JOIN matiere_premiere ON matiere_premiere.code = matiere_premiere_code
        WHERE DATE <= CURRENT_DATE()  ORDER BY DATE DESC)
        AS REQ ON REQ.matiere_premiere_code = matiere_premiere.code
        GROUP BY matiere_premiere.code ORDER BY matiere_premiere.code

【问题讨论】:

  • 将问题移至文章开头(代码示例之前),改进了英文格式并添加了 sql 标签以更好地突出语法

标签: sql entity-framework-4


【解决方案1】:

很简单,组也是枚举数,所以应该返回

select grp;

然后,对于每个组,您可以执行一个 foreach 值

foreach(var group in query)
{
    Console.WriteLine("Key: " + group.Key);
    foreach(var v in group)
    {
        Console.WriteLine("Value: " + v.Property);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2013-03-17
    • 2014-02-24
    相关资源
    最近更新 更多