using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
private static List<Product> products;
public static void Main()
{
// your code goes here
products = new List<Product>()
{
new Product{ ProductCategoryId=1, ProductDepartmentId=1, sections="1"},
new Product{ ProductCategoryId=2, ProductDepartmentId=2, sections="2"},
new Product{ ProductCategoryId=3, ProductDepartmentId=3, sections="3"}
};
var prods = GetProducts(2);
Console.WriteLine("ProductCount: {0}", prods.Count());
}
public static IEnumerable<Product> GetProducts(
int? productDepartmentId = null,
int? productCategoryId = null,
IEnumerable<int?> productCategoryIds = null,
IEnumerable<string> sections = null)
{
var retList = (from obj in products
where (productDepartmentId == null || obj.ProductDepartmentId == productDepartmentId) &&
(productCategoryId == null || obj.ProductCategoryId == productCategoryId) &&
(productCategoryIds == null || productCategoryIds.Contains(obj.ProductCategoryId)) &&
(sections == null || sections.Contains(obj.sections))
select obj).ToList();
return retList;
}
}
public class Product
{
public int ProductDepartmentId { get; set; }
public int ProductCategoryId { get; set; }
public string sections { get; set; }
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7Cglwcml2YXRlIHN0YXRpYyBMaXN0PFByb2R1Y3Q+IHByb2R1Y3RzOwoJCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCXByb2R1Y3RzID0gbmV3IExpc3Q8UHJvZHVjdD4oKQogICAgICAgIHsKICAgICAgICAgICAgbmV3IFByb2R1Y3R7IFByb2R1Y3RDYXRlZ29yeUlkPTEsIFByb2R1Y3REZXBhcnRtZW50SWQ9MSwgc2VjdGlvbnM9IjEifSwKICAgICAgICAgICAgbmV3IFByb2R1Y3R7IFByb2R1Y3RDYXRlZ29yeUlkPTIsIFByb2R1Y3REZXBhcnRtZW50SWQ9Miwgc2VjdGlvbnM9IjIifSwKICAgICAgICAgICAgbmV3IFByb2R1Y3R7IFByb2R1Y3RDYXRlZ29yeUlkPTMsIFByb2R1Y3REZXBhcnRtZW50SWQ9Mywgc2VjdGlvbnM9IjMifQogICAgICAgIH07CgogICAgICAgIHZhciBwcm9kcyA9IEdldFByb2R1Y3RzKDIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJQcm9kdWN0Q291bnQ6IHswfSIsIHByb2RzLkNvdW50KCkpOwoJfQoJCglwdWJsaWMgc3RhdGljIElFbnVtZXJhYmxlPFByb2R1Y3Q+IEdldFByb2R1Y3RzKAogICAgICAgIGludD8gcHJvZHVjdERlcGFydG1lbnRJZCA9IG51bGwsCiAgICAgICAgaW50PyBwcm9kdWN0Q2F0ZWdvcnlJZCA9IG51bGwsCiAgICAgICAgSUVudW1lcmFibGU8aW50Pz4gcHJvZHVjdENhdGVnb3J5SWRzID0gbnVsbCwKICAgICAgICBJRW51bWVyYWJsZTxzdHJpbmc+IHNlY3Rpb25zID0gbnVsbCkKICAgIHsKICAgICAgICB2YXIgcmV0TGlzdCA9IChmcm9tIG9iaiBpbiBwcm9kdWN0cwogICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIChwcm9kdWN0RGVwYXJ0bWVudElkID09IG51bGwgfHwgb2JqLlByb2R1Y3REZXBhcnRtZW50SWQgPT0gcHJvZHVjdERlcGFydG1lbnRJZCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZHVjdENhdGVnb3J5SWQgPT0gbnVsbCB8fCBvYmouUHJvZHVjdENhdGVnb3J5SWQgPT0gcHJvZHVjdENhdGVnb3J5SWQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2R1Y3RDYXRlZ29yeUlkcyA9PSBudWxsIHx8IHByb2R1Y3RDYXRlZ29yeUlkcy5Db250YWlucyhvYmouUHJvZHVjdENhdGVnb3J5SWQpKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWN0aW9ucyA9PSBudWxsIHx8IHNlY3Rpb25zLkNvbnRhaW5zKG9iai5zZWN0aW9ucykpCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IG9iaikuVG9MaXN0KCk7CiAgICAgICAgcmV0dXJuIHJldExpc3Q7CiAgICB9Cn0KCnB1YmxpYyBjbGFzcyBQcm9kdWN0CnsKICAgIHB1YmxpYyBpbnQgUHJvZHVjdERlcGFydG1lbnRJZCB7IGdldDsgc2V0OyB9CiAgICBwdWJsaWMgaW50IFByb2R1Y3RDYXRlZ29yeUlkIHsgZ2V0OyBzZXQ7IH0KICAgIHB1YmxpYyBzdHJpbmcgc2VjdGlvbnMgeyBnZXQ7IHNldDsgfQp9