我怎样才能使这更简洁?

Nic*_*pat 0 c# linq

var users = from user in st.Users
            where user.UDID == cr.User.Udid
            select user;
var cityIds from city in users.First().Cities
            select city.ID;
DoSomethingWith(cityIds);
Run Code Online (Sandbox Code Playgroud)

它始于此查询:

select CityID from UserCities inner join User on User.ID=UserID where User.UDID=@UDID;

我似乎无法使用Linq-to-Entities获得正确的连接语法

Jon*_*eet 6

使用查询表达式在这里并没有真正帮助你,你也不需要其中两个.这是一个直接的翻译:

var cityIds = st.Users
                .Where(user => user.UDID == cr.User.Udid)
                .First()
                .Cities
                .Select(city => city.ID);
Run Code Online (Sandbox Code Playgroud)

现在使用First可以获取谓词的事实,您可以删除Where:

var cityIds = st.Users
                .First(user => user.UDID == cr.User.Udid)
                .Cities
                .Select(city => city.ID);
Run Code Online (Sandbox Code Playgroud)