来自简单sql的linq表达式似乎在linq中存在局限性

时间:2016-05-07 10:04:40

标签: c# .net linq

我有以下sql查询

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    if string.characters.count == 0 && range.length > 0 {
        // Back pressed
        // do whatever you want with your labels..
        return false
    }

    return true
}

我希望将它转换为linq语句lambda表达式和类似sql的语法。我试过但似乎有点困难。我也使用了像sqltolinq这样的工具但似乎没有工作。

问题在于类似sql的语法是我的查询连接包含多个包含 select * from one a inner join one b on ( a.weekday=b.weekday and a.starttime =b.starttime and a.sl>b.sl ) where a.weekday=b.weekday and a.starttime=b.starttime and a.endtime=b.endtime equal运算符的元素。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

LINQ只支持equijoins,但是你可以为工作日和开始时间做一个等值连接,然后用endtime部分然后用where子句做其余部分。

// Names changed to be more idiomatic where feasible. We have no
// idea what "sl" means.
var query = from a in db.TableA
            join b in db.TableB
              on new { a.WeekDay, a.StartTime, a.EndTime }
              equals new { b.WeekDay, b.StartTime, b.EndTime }
            where a.Sl > b.Sl
            select ...;