我正在尝试创建一个get方法,它比较2个列表,一个int和一个对象。 Det方法应返回所有对象或ID,这不在其他列表中
public List<ProductBO> GetAll()
{
using (var uow = facade.UnitOfWork)
{
return uow.ProductRepository.GetAll().Select(p => Pconv.Convert(p)).ToList();
}
}
public List<ProductBO> GetFilteretProduct(List<int> ids)
{
var Product = GetAll();
var FilteretProduct = Product.Where(p => !ids.Contains(p.IngredientIds));
return FilteretProduct;
}
当我测试代码时,它会返回所有内容吗?
答案 0 :(得分:0)
你可以写一个扩展方法,虽然框架中可能已经存在这样做的事情。
public static class Extentions
{
public static List<T> Filter<T>(this List<T> list, List<T> filterList)
{
return list.Where(v => !filterList.Contains(v)).ToList();
}
}
并使用它:
var filteredList = list1.Filter(list2);
您可能需要更改Contains语句的详细信息以满足您的需求。
@NetMage发表评论后编辑:
public static class Extentions
{
public static IEnumerable<T> NotIn<T>(this IEnumerable<T> list, IEnumerable<T> filterList)
{
return list.Where(v => !filterList.Contains(v));
}
}
答案 1 :(得分:0)
我相信你想要的意图是:
var missing = example.Except(sample);
这将使用您可以根据自己的目的进行调整的IEquatable
。 (About Except)
您还可以通过以下方式实现此目的:
var missing = example.Where(item => sample.Any(itm => item == itm));
这段代码将返回第二个集合中没有的任何项目。对于非常基本的Linq,授予上述内容并不像其他方法那样高效。但是你可以通过丰富的方法来实现这一目标。