1

我总是发现自己被困在同一个地方的 LINQ 上。我根本无法让 LINQ 技术牢牢记住。

var groupIds = context.Set<UserControl>().Where(x => x.SystemUserId == System.Convert.ToInt32(userId)).Select(x => x.SystemGroupId);
{
    var userGroups = context.Set<Group>().Where(g => g.GroupId)
    {
        groups.AddRange(userGroups.Select(sysGroup => new ToolUserGroup(sysGroup.GroupName, sysGroup.GroupId.ToString())));
    }
}

我正在尝试根据在第一个id列表中选择的列表的属性来选择Group对象列表。我根本无法弄清楚语法。GroupIdUserControl

我什至不确定这是否比手工编写 SQL 更容易……在我看来,LINQ 总是比编写 SQL 复杂和抽象得多。

4

2 回答 2

3

我假设,您正在尝试根据项目列表选择一个列表。

var groupIds = context.Set<UserControl>()
                  .Where(x => x.SystemUserId ==System.Convert.ToInt32(userId))
                  .Select(x => x.SystemGroupId);
                  .ToList();

var userGroups = context.Set<Group()
                        .Where(g=>groupIds.Contains(g.GroupId)).ToList();
于 2013-05-03T11:49:49.677 回答
0

你可以尝试类似的东西

    class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
}

class SubItem
{
    public int Id { get; set; }
    public int ForeignKey { get; set; }
    public string SubName { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var sub = new List<SubItem>();
        var item = new List<Item>();

        sub.Where(s => item.Select(i => i.Id).Contains(s.ForeignKey)).ToList();
    }
}
于 2013-05-03T11:54:47.073 回答