【发布时间】:2017-04-24 16:27:16
【问题描述】:
我有一个向控制器发送参数以获取类别清单的表单。对于我的其他查询,我发送表单数据:
public ActionResult Index(string[] category)
将每个放在一个哈希集中:
if ((category != null) && (category.Count() > 0))
{
foreach (var item in category)
{
categoryHashset.Add(item);
}
}
我用过
categoryHashset.Contains(object.Category)
在 where 语句中设置类型。这对我的大多数查询都很有效,因为大多数表都有一个类别映射到一个组。因此,一个组可能在一个表中出现多次,但与多个类别相关联。所以我会这样做:
var groupCount = studyGroup
.GroupBy(s => s.ID)
.Select(g => new { ID = g.Key, Count = g.Count() });
foreach (var checkCount in groupCount) //check or filter as well
{
if (checkCount.Count == category.Count())
{
otherHashset.Add(checkCount.ID.ToString());
}
}
但是,在这种特定情况下,每个类别都位于表中的一列中,由竖线 (|) 分隔。如果用户检查多个类别,我只想拉回列中包含所有这些类别的组。所以换句话说,如果我检查“猫”和“狗”,它应该只拉回来:
Group Category
Star cat|dog|bird
Night cat|bird
Sky cat|dog
上表示例中的星星和天空。
如何处理管道并返回正确的结果?
【问题讨论】:
-
您关于其他类别如何工作的示例似乎不包括
categoryHashset或任何where条件来过滤groupCount?
标签: c# asp.net-mvc linq