返回c#中查询返回值的方法的结果

本文关键字:方法 结果 返回值 查询 返回 | 更新日期: 2023-09-27 18:07:33

这是我的代码在一个控制器;我使用MVC 5 ASP。净

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#中查询返回值的方法的结果

使用IList。

通常最好通过接口公开自定义对象。这里也讨论了这个问题:为什么认为公开List是不好的?

嗯,可能是c#和ASP的新手。我无法理解banavalikar给出的答案。确切地说,上述方法的返回类型应该是IQueryable。然而,由于这个项目的结构方式,这个方法是从不同的项目中调用的。因此,它给了我in different context误差。但是,最后我找到了一个简单的解决方案来满足我的需求;只是返回一个字符串列表。(我的EmpIds是字符串)和使用Contains()代替Except()

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;
        }
    }

从控制器调用这个;

List<string> x = MyDbQueryFile.GetNotAvailEmp(entityx);
var finalEmp= db.Emp.Where(s => !x.Contains(s.EmpId)).ToList();