3 回答
TA贡献1828条经验 获得超3个赞
这个表达式应该做你想要达到的目标。
dataSource.StateList.Where(s => countryCodes.Contains(s.CountryCode))
TA贡献1831条经验 获得超4个赞
这将转换为Linq to SQL中的where in子句...
var myInClause = new string[] {"One", "Two", "Three"};
var results = from x in MyTable
where myInClause.Contains(x.SomeColumn)
select x;
// OR
var results = MyTable.Where(x => myInClause.Contains(x.SomeColumn));
在您的查询的情况下,您可以做这样的事情......
var results = from states in _objectdatasource.StateList()
where listofcountrycodes.Contains(states.CountryCode)
select new State
{
StateName = states.StateName
};
// OR
var results = _objectdatasource.StateList()
.Where(s => listofcountrycodes.Contains(s.CountryCode))
.Select(s => new State { StateName = s.StateName});
TA贡献1818条经验 获得超3个赞
我喜欢它作为扩展方法:
public static bool In<T>(this T source, params T[] list)
{
return list.Contains(source);
}
现在你打电话:
var states = _objdatasources.StateList().Where(s => s.In(countrycodes));
您也可以传递单个值:
var states = tooManyStates.Where(s => s.In("x", "y", "z"));
感觉更自然,更接近sql。
- 3 回答
- 0 关注
- 619 浏览
添加回答
举报