【问题标题】:Select a list that contains all elements from another list [duplicate]选择一个包含另一个列表中所有元素的列表[重复]
【发布时间】:2015-09-08 07:34:45
【问题描述】:

好的,所以我有两个元素:

class Full
{
    public string FullId {get; set;}
    public List<string> Tapes {get; set;}
}

class OptSet
{
    public string SetId {get; set;}
    public list<string> Tapes2 {get; set;}
}

我需要选择一个Full,其中Tapes 列表包含OptSet Tapes2 列表中的所有元素。

我需要在 Linq 中进行。我试过了

Full currFull = inputFull.Where(f => 
    f.Tapes.Contains(OptSet.Tapes2.ToString())).FirstOrDefault();

但这会导致 null。

【问题讨论】:

    标签: c#


    【解决方案1】:

    这行得通吗?

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Full full = new Full()
                {
                    FullId = "A",
                    Tapes = new List<string>() { "1", "2", "4" }
                };
    
    
    
                List<OptSet> optSet = new List<OptSet>() {
                    new OptSet() { SetId = "x", Tapes2 = new List<string>() {"1", "2", "3"}},
                    new OptSet() { SetId = "y", Tapes2 = new List<string>() {"1", "2", "4"}},
                    new OptSet() { SetId = "z", Tapes2 = new List<string>() {"1", "2", "3", "4"}}
                };
    
    
                List<OptSet> results = optSet.Where(x => full.Tapes.Where(y => !x.Tapes2.Contains(y)).Count() == 0).ToList();
    
            }
        }
        public class Full
        {
            public string FullId { get; set; }
            public List<string> Tapes { get; set; }
        }
    
    
        public class OptSet
        {
            public string SetId { get; set; }
            public List<string> Tapes2 { get; set; }
        }
    
    }
    
    ​
    

    【讨论】:

    • 如果它不仅返回磁带列表,而且返回完整对象,那就太棒了。
    • 您必须有一个 OptSet 列表。固定答案。
    • 这不起作用它无限循环。
    • 它不能永远循环。不可能的。您可能有大量数据或损坏的列表。该代码有效。我添加了测试数据以显示它有效。
    猜你喜欢
    • 2018-04-19
    • 2013-12-15
    • 2016-02-09
    • 2021-04-14
    • 2016-04-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    相关资源
    最近更新 更多