【问题标题】:Linq 2 SQL left Join with monoLinq 2 SQL 左加入单声道
【发布时间】:2013-01-15 12:56:08
【问题描述】:

我无法在 Mono 中获得闲置请求: 没有连接它会工作。 当我只选择 t1 时它也可以工作,但我无法从两个表中选择一些东西。 我想我想要一个左连接,我总是在 t1 中有条目,如果 NameOfFile 与 FileName 匹配,那么我想要加入表。

额外问题:我的查询何时执行?当我运行 foreach 循环时?

var result = (
            from t1 in db.Table1 
            join t2 in db.Table2 on t1.FileName equals t2.NameOfFile
            into joinDep                
            from t3 in joinDep.DefaultIfEmpty () 
            select new 
            {
            Time = t1.WriteTime,
            Name = t2.NameOfFile

            }
        )
        .OrderByDescending (c => c.Time.Date)
        .Take (10);
foreach (var entry in result)
{
    Console.WriteLine (entry.Name );
}

【问题讨论】:

    标签: linq linq-to-sql mono


    【解决方案1】:

    使用这个:

    var query = from t1 in db.Table1 
                join t2 in db.Table2 on t1.FileName equals t2.NameOfFile into gj
                from joinDep in gj.DefaultIfEmpty ()
                select new 
                {
                   Time = t1.WriteTime,
                   Name = joinDep.NameOfFile
                };
    
    var result = query.OrderByDescending (c => c.Time.Date)
                    .Take (10);
    

    是的。 Take 使用延迟执行。

    【讨论】:

    • 我想这是我额外问题的答案?
    • @JoergWeissbecker 我也回答了你的主要问题。
    • 我找不到 joinDep ...我想我复制粘贴了一些错误
    • 这行得通,但是当我使用 .OrderByDescending (c => c.Time.Date) 行时,我遇到了异常
    • 显示异常。有t1.WriteTime 属性Date
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多