LINQ根据另一个选择选择

时间:2013-05-03 11:46:33

标签: c# linq

我总是发现自己在同一个地方停留在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())));
    }
}

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

我甚至不确定只是手工编写SQL会更容易...... LINQ总是在我看来比编写SQL更加复杂和抽象。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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();
    }
}