【发布时间】:2014-02-13 09:33:22
【问题描述】:
在我的 LINQ 查询中,我使用 Where 子句来检查属性是否存在于值数组中。我想更新查询:
string[] itemColour
string[] itemType
List<displayItem> displayItems = (from item in allItems
Where itemColour.Contains(item.colour)
Where itemType.Contains(item.type)
select new displayItem
......................etc...etc
所以我拥有的是
'我的 'itemColour' 数组包含这个 'item.colour' 选择它'
'我的'itemType'数组包含这个'item.type'的地方选择它'
我追求的是
'如果我的 'itemColour' 数组有一个项目,其中任何地方都有 'item.colour',请选择它
'如果我的 'itemType' 数组有一个以 'item.type' 开头的项目,请选择它
我知道“StartsWith”和“EndsWith”,但不知道如何将它们与这些数组一起使用。
注意: itemColour 可能包含颜色代码为“RGW”的项目,我希望能够根据三个字母中的任何一个来选择该项目
更新
建议的解决方案:
var query = from item in allItems
where itemColour.Any(c => c.Contains(item.colour))
&& itemType.Any(t => t.StartsWith(item.type)
select ...;
有问题。如果我想带回颜色代码为“RB”的商品。 我的数组可能包含两个项目“R”和“B”,建议的查询只返回颜色代码为“R”或“B”的项目,而不是两者。
我正在使用 MVC 5、LINQ TO Entity、.NET 4.5
谢谢
【问题讨论】: