Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MultipleSelectionComboBox中的值查询SQL表_C# - Fatal编程技术网

C# 使用MultipleSelectionComboBox中的值查询SQL表

C# 使用MultipleSelectionComboBox中的值查询SQL表,c#,C#,所以,我使用Syncfusion控件,我有一个MultipleSelectComboBox,用户可以在其中过滤多个参数 我有一个查询,它将加载一个基于参数查询的列表 因此,首先,我有一个阶级来持有我的价值观 public class Orders { public int ID { get; set; } public string OrderNum { get; set; } public string Status { get; set; } public D

所以,我使用Syncfusion控件,我有一个MultipleSelectComboBox,用户可以在其中过滤多个参数

我有一个查询,它将加载一个基于参数查询的列表

因此,首先,我有一个阶级来持有我的价值观

public class Orders
{
    public int ID { get; set; }
    public string OrderNum { get; set; }
    public string Status { get; set; }
    public DateTime Date { get; set; }
}
然后,查询:

public IEnumerable<Orders> LoadData()
    {
        var ctx = new DbContext();
        var query = (from o in ctx.tblOrders.AsQueryable()
                     select new Orders
                     {
                         ID = o.OrderID,
                         OrderNum = o.OrderNum.ToString(),
                         Status = o.OrderStatus,
                         Date = o.OrderDate
                     });
        if(CmbOrderStatus.SelectedItems != null)
        {
            List<string> list = new List<string>();
            foreach (SelectedItems obj in CmbOrderStatus.SelectedItems)
            {
                list.Add(obj.ToString());
            }
            for(int i = 0; i < list.Count; i++)
            {
                var value = list[i];
                query = query.Where(p => p.Status == value);
            }
        }
        return query.ToList();
    }
public IEnumerable LoadData()
{
var ctx=new DbContext();
var query=(来自ctx.tblOrders.AsQueryable()中的o)
选择新订单
{
ID=o.OrderID,
OrderNum=o.OrderNum.ToString(),
状态=o.OrderStatus,
日期=o.OrderDate
});
如果(CmbOrderStatus.SelectedItems!=null)
{
列表=新列表();
foreach(在CmbOrderStatus中选择EditEMS对象。选择EditEMS)
{
添加(obj.ToString());
}
for(int i=0;ip.Status==value);
}
}
返回query.ToList();
}
所以,在数据库中有很多订单和很多订单状态,如“打开”、“延迟”、“关闭”

所以,如果我在CmbOrderStatus中过滤“打开”和“延迟”,我什么也得不到!如果只选了一个,我什么也得不到

有人帮忙吗


谢谢

代码只使用最后一个过滤器。 试试这个:

public IEnumerable<Orders> LoadData()
{
    var ctx = new DbContext();
    var query = (from o in ctx.tblOrders.AsQueryable()
                 select new Orders
                 {
                     ID = o.OrderID,
                     OrderNum = o.OrderNum.ToString(),
                     Status = o.OrderStatus,
                     Date = o.OrderDate
                 });
    if(CmbOrderStatus.SelectedItems != null)
    {
        List<string> list = new List<string>();
        foreach (SelectedItems obj in CmbOrderStatus.SelectedItems)
        {
            list.Add(obj.ToString());
        }

        query = query.Where(p => list.Contains(p.Status));            
    }
    return query.ToList();
}
public IEnumerable LoadData()
{
var ctx=new DbContext();
var query=(来自ctx.tblOrders.AsQueryable()中的o)
选择新订单
{
ID=o.OrderID,
OrderNum=o.OrderNum.ToString(),
状态=o.OrderStatus,
日期=o.OrderDate
});
如果(CmbOrderStatus.SelectedItems!=null)
{
列表=新列表();
foreach(在CmbOrderStatus中选择EditEMS对象。选择EditEMS)
{
添加(obj.ToString());
}
query=query.Where(p=>list.Contains(p.Status));
}
返回query.ToList();
}

我想您需要类似SelectedItems包含p.Status的内容。现在,您要求的状态等于所有选定项,除非所有选定项都相同,否则这是不可能的。这可能会起作用,但说代码只使用最后一个筛选器是不正确的。它们是累加的,但显然一个字符串不能等于多个不同的字符串。