关于asp.net mvc:返回一个返回C#中查询值的方法的结果?

Return results from a method returning values of a query in C#?

这是我在控制器中的代码;我使用MVC 5 ASP.NET

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var x = db.MyEntity.Include(ds => ds.MyEntity1)
    .Where(ds =>
            (
                ds.MyEntity1.MyEntity12.x <= MyEntity1.MyEntity12.x
            &&
                ds.MyEntity1.MyEntity12.y>= MyEntity1.MyEntity12.x
            )
        ||
            (
                ds.MyEntity1.MyEntity12.x<= MyEntity1.MyEntity12.y
            &&
                ds.MyEntity1.MyEntity12.y>= MyEntity1.MyEntity12.y
            ))
    .Select(ds => ds.Emp);

    var finalEmp = db.Emp.Except(x).ToList();

现在我想重用这个x变量。我想把它分成一个方法,并从任何地方调用它。但是我怀疑在该方法中应该使用哪种返回值,所以它将与except()一起工作。

事先谢谢。


嗯,也许作为一个C和ASP.NET的新手,我不能用Banavalikar给出的答案来解决问题。对于上述方法,准确的返回类型应该是IQueryable。但是,由于此项目的结构方式,从其他项目调用此方法。因此,它给了我一个错误。但最后我找到了一个简单的解决方法来满足我的需要;只是返回字符串列表。(我的EMPID是字符串)使用Contains()而不是Except()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static List<string> GetNotAvailEmp(Entity1 entityx)
    {
        using (MyDbContext db = new MyDbContext())
        {
            var x = db.MyEntity.Include(ds => ds.MyEntity1)
                .Where(ds =>
                    (
                      ds.MyEntity1.MyEntity12.x <= entityx.MyEntity12.x
                        &&
                      ds.MyEntity1.MyEntity12.y>= entityx.MyEntity12.x
                    )
                    ||
                    (
                     ds.MyEntity1.MyEntity12.x<= entityx.MyEntity12.y
                       &&
                     ds.MyEntity1.MyEntity12.y>= entityx.MyEntity12.y
                    ))
                   .Select(ds => ds.Emp.EmpId).ToList();
            return x;
        }
    }

从我的管制员那里打电话给我;

1
2
3
List<string> x = MyDbQueryFile.GetNotAvailEmp(entityx);

var finalEmp= db.Emp.Where(s => !x.Contains(s.EmpId)).ToList();

使用ILIST。

通常,最好通过接口公开自定义对象。这里也讨论了这一点:为什么公开列表被认为是不好的?