首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较Linq查询中的两个列表?

如何比较Linq查询中的两个列表?
EN

Stack Overflow用户
提问于 2017-10-24 07:45:54
回答 1查看 656关注 0票数 0

我有数据库模型

代码语言:javascript
复制
public class Dish
    {
        public int Id { get; set; }
        public String Name { get; set; }
        public Dictionary<Ingridient, int> Ingridients { get; set; }
        public List<String> Images { get; set; }
        public String  Guide { get; set; }
        public Guid User { get; set; }
        public DishType dishType { get; set; }
        public int Rate { get; set; }

        public enum DishType
        {
            Polish,
            Asian,
            Indian,
            Other
        };
    }

我想得到所有的菜,有梯度,要求从List<Ingridient>。有点像

输入List<Ingridient>

把字典中包含所有这些渐变的菜都拿出来。而不听话是关键。

我尝试了一些缓慢的解决方案,它适用于数据库中的所有菜品,但我想移到,以使它更快。

我的解决方案--非常慢--占用了大量的记忆:

代码语言:javascript
复制
List<Dish> allDishes = Dishes.Select(n => n).ToList();
            List<Dish> Found = new List<Dish>();
            foreach(var d in allDishes)
            {
                List<Ingridient> fromDish = d.Ingridients.Keys.ToList();

                foreach(var ing in ingridients)
                {
                    if (!fromDish.Contains(ing))
                        break;
                }

                Found.Add(d);
            }

我想将此行为重新创建为Linq查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-24 16:14:51

试一试

代码语言:javascript
复制
dishes.Where(dish => !ingredients.Except(dish.Ingredients).Any()).ToList();

其中,!ingredients.Except(dish.Ingredients).Any()检查请求列表中的所有成分是否包含在菜肴的配料中。

你可以摆弄一个测试的这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46904910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档