C# 使用MultipleSelectionComboBox中的值查询SQL表
所以,我使用Syncfusion控件,我有一个MultipleSelectComboBox,用户可以在其中过滤多个参数 我有一个查询,它将加载一个基于参数查询的列表 因此,首先,我有一个阶级来持有我的价值观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
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的内容。现在,您要求的状态等于所有选定项,除非所有选定项都相同,否则这是不可能的。这可能会起作用,但说代码只使用最后一个筛选器是不正确的。它们是累加的,但显然一个字符串不能等于多个不同的字符串。