public Class SomeModel
{
public int Id { get; set;}
public string Name {get; set;}
}
这是我将值绑定到上面的模型的方法,它包含内联SQL查询
Public ActionResult GetData()
{
IEnumarable<SomeModel> alltheListValues = ....
}
使用上面的方法,我想过滤掉以下字符串中包含id的所有记录。
string filterIds = "12,13,14,15"
SomeModel模型类Id
值是Integer类型,但是我设置了字符串类型id,而没有循环这个,我决定使用WHERE IN查询来过滤它。
因为WHERE IN查询我们可以在Linq中获得contains
我写下了follwoing函数来过滤值
IEnumarable<SomeModel> filterValues = GetData.Where(Id=> Id.ToString().Contains(filterIds));
但这不是选择任何值总是零过滤结果,我怎么能正确写出
答案 0 :(得分:1)
这可能是一种方法:
string filterIds = "12,13,14,15";
//Convert filterIds string into a integers collection
var ids=filterIds.Split(',').Select(int.Parse);
IEnumarable<SomeModel> filterValues = GetData().Where(sm=> ids.Contains(sm.Id));
我现在注意到的一件事是GetData
方法的签名,我想你的意思是:
public IEnumarable<SomeModel> GetData()
{
IEnumarable<SomeModel> alltheListValues = ....
//...
return alltheListValues;
}
答案 1 :(得分:0)
拥有数组/集合而不是列表,并检查id是否在其中。
App.xaml.cs
其中ActualGetData()返回IEnumarable 在您当前的代码中,GetData()返回一个ActionResult,如Drew Kennedy所提到的
答案 2 :(得分:0)
如果您确定“Id”集合的所有元素都可以转换为数字,那么您可以使用以下方法。
var models = new List<SomeModel>(); //Consider that this collection is coming from some service or repository.
var Ids = filterIds.Split(',').Select(x => int.Parse(x));
IEnumarable<SomeModel> filterValues = models.Where(n => Ids.Contains(n.Id));
你的代码没有编译,所以我在这里只是发布逻辑代码。您可以根据自己的要求使用它。