Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不包含对';包含';_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# 不包含对';包含';

C# 不包含对';包含';,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,它显示代码的错误,如“不包含ID的定义” [HttpPost] public ActionResult show(List<int> ids) { if (ids != null) { int[] brands = ids.ToArray(); var brandId = _db.Brands.Where(p => brands.Contains(p.ID)); va

它显示代码的错误,如“不包含ID的定义”

[HttpPost]
public ActionResult show(List<int> ids)
    {
        if (ids != null)
        {
            int[] brands = ids.ToArray();
            var brandId = _db.Brands.Where(p => brands.Contains(p.ID));
            var srtItems = _db.Products.Where(p => p.CategoryID == brandId.ID);

            return PartialView("_pView", srtItems);
        }
    }
[HttpPost]
公共操作结果显示(列表ID)
{
如果(id!=null)
{
int[]brands=ids.ToArray();
var brandId=_db.Brands.Where(p=>Brands.Contains(p.ID));
var srtItems=_db.Products.Where(p=>p.CategoryID==brandId.ID);
返回部分视图(“\u pView”,srtItems);
}
}
对于以下代码,错误为“不包含包含的定义”

[HttpPost]
        public ActionResult show(List<int> ids)
        {
            if (ids != null)
            {
                int[] brands = ids.ToArray();
                var brandId = _db.Brands.Where(p => brands.Contains(p.ID));

                var sortItemss = _db.Products.Where(p => brandId.Contains(p.CategoryID));
                return PartialView("_pView", srtItems);
            }
[HttpPost]
公共操作结果显示(列表ID)
{
如果(id!=null)
{
int[]brands=ids.ToArray();
var brandId=_db.Brands.Where(p=>Brands.Contains(p.ID));
var sortItemss=_db.Products.Where(p=>brandId.Contains(p.CategoryID));
返回部分视图(“\u pView”,srtItems);
}

请告诉我这就是
var
成为万恶之源的地方,因为它隐藏了真实的数据类型。删除var,您会立即注意到问题:

int[] brands = ids.ToArray();
IQueryable<Brand> brandId = _db.Brands.Where(p => brands.Contains(p.ID));
IQueryable<Product> srtItems = _db.Products.Where(p => p.CategoryID == brandId.ID);
获取检索到的记录的ID,并根据这些ID进行匹配


作为建议,不要使用
var
,除非实际类型是多余的(意思是它显示在语句的其他部分)

@diiN\uu他肯定这样做了,否则他将无法在
位置使用
错误建议。您的
var
“替换”将实际类型从
IQueryable
更改为
IEnumerable
@IvanStoev关于第二部分绝对正确,但是关于建议!我这么做很匆忙,但是如果有人故意这么做,那就意味着他不知道该方法返回什么..我们不应该使用不知道其签名的方法I猜猜看。否则,我们需要完全理解
IQueryable
IEnumerable
之间的区别,以及在何处和何处执行的内容When@user3185569,先生,你能解释一下IEnumerable和IQueryable之间有什么区别吗?我的意思是什么时候使用它们。@pavan这个问题已经有了很好的答案其中:@user3185569,先生,请您引导我回答这个问题,
IQueryable<int> brandIds = _db.Brands.Where(p=> brands.Contains(p.ID)).Select(b=> b.ID);
IQueryable<Product> srtItems = _db.Products.Where(p=> brandIds.Contains( p.CategoryID));