相关疑难解决方法(0)

Linq To Entities - 如何过滤子实体

我有实体GroupUser.
Group实体拥有Users财产是用户的列表.
用户有一个名为的属性IsEnabled.

我想编写一个返回Groups 列表的linq查询,该列表只包含Users IsEnabled为true 的s .

例如,对于类似下面的数据,
AllGroups
组A
用户1(IsEnabled = true)
用户2(IsEnabled = true)
用户3(IsEnabled = false)

B组
用户4(IsEnabled = true)
用户5(IsEnabled = false)
用户6(IsEnabled = false)

我想得到
FilteredGroups
A组
用户1(IsEnabled = true)
用户2(IsEnabled = true)

B组
用户4(IsEnabled = true)

我尝试了以下查询,但Visual Studio告诉我
[不能将属性或索引器'用户'分配给它 - 它是只读的]

FilteredGroups = AllGroups.Select(g => new Group()
                    {
                        ID = g.ID,
                        Name = g.Name,
                        ...
                        Users = g.Users.Where(u …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities entity-framework wcf-ria-services

14
推荐指数
2
解决办法
2万
查看次数

实体框架包括过滤器子集合

我在LINQ查询中为包含的项添加一些过滤条件有些困难.我的查询是这样的

var item = _Context.Order.Include("Inner")
           .Include("Inner.first")
           .Include("Inner.second")
           .Where(x => ( !(x.IsDeleted) && (x.IsActive) && 
                 (x.itemid == id))).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,"Inner"是另一个项目列表.现在我需要过滤内部项目.我只需要内部项目,过滤条件为inner.isDeleted = true.

查询应该返回一个类,

public class Order
{

    public string Name { get; set; }
    public List<InnerDetails> Inner{ get; set; }
    public bool IsDeleted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和InnerDetails类一样

public class InnerDetails 
{

    public string Sample { get; set; }
    public bool IsDeleted { get; set; }
    public int firstId { get; set; }
    public int secondID { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net-mvc entity-framework entity-framework-6

9
推荐指数
1
解决办法
1万
查看次数

显式加载N:M with Filtering

我试图从EntityFramework中的显式加载过滤结果.

当我不应用任何过滤器但是在应用过滤器后它不加载结果时,显式加载有效.

public partial class Student
{
    public int StudentId { get; set; }
    public int CourseId { get; set; }
    public string Name { get; set; }
    public string Status { get; set; }
    public virtual ICollection<Grade> Grades { get; set; }
}

public partial class Grade
{
    public int GradeId { get; set; }
    public string Value { get; set; }
    public string Status { get; set; }
    public virtual ICollection<Student> Students { get; set; }
} …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

7
推荐指数
1
解决办法
222
查看次数

关系的条件映射

使用实体框架(代码优先),我试图映射以下两个实体之间的条件/过滤关系:

构建
BuildingId
BuildingName

Area
AreaId
ParentId
AreaName
IsSubArea

一个建筑可以有许多地区
区域可以有多个(次)地区

我想创建建筑区域之间的关系,其中标有'IsSubArea'的区域被过滤掉.在此上下文中,ParentId将与Building相关,否则,ParentId将是另一个Area.这将允许我创建具有许多区域的建筑物,并且每个区域可以具有许多子区域,从而创建树形结构.

与我发现的解决方案最接近的是"软删除"功能(来源):

modelBuilder.Entity<Foo>().Map(m => m.Requires("IsDeleted").HasValue(false));
Run Code Online (Sandbox Code Playgroud)

转换为适合我的例子:

modelBuilder.Entity<Area>().Map(m => m.Requires("IsSubArea").HasValue(false));
Run Code Online (Sandbox Code Playgroud)

但据我所知,这与建筑物的关系无关.

另一种解决方案是在Building上创建一个属性,该属性指定用于返回相关区域的查询定义():

public class Building
{
    public int BuildingId {get; set;}
    public string BuildingName {get; set;}

    public IQueryable<Area> BuildingAreas
    {
        get 
        {
            return from area in areas
                   where area.IsSubArea == false
                   and   area.ParentId == BuildingId
                   select area;

            //Assume I have …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework ef-code-first entity-framework-5

5
推荐指数
1
解决办法
2681
查看次数

LINQ查询 - 如何对急切提取进行排序和过滤

如何对父子关系进行急切查询:

  1. 过滤子字段
  2. 对父母和孩子进行排序
  3. 返回列表或父母与预先填充的孩子

如果我试试

from p in _context.Parents.Include("children")
join c in _context.childrenon p.Id equals c.ParentId 
where d.DeletedDate == null
orderby p.Name ascending, c.Name 
select p
Run Code Online (Sandbox Code Playgroud)

然后我得到了Parent对象,但是每个Parent对于孩子都有NULL

如果我试试

from p in _context.Parents.Include("children")
orderby p.Name ascending
select p
Run Code Online (Sandbox Code Playgroud)

查询将返回所有父项和子项,但不会对其进行过滤或排序.

我想要的结果是IEnumerable<Parent> ie

Parent[0].name = "foo"
Parent[0].children = IEnumerable<Child>
Parent[1].name = "bar"
Parent[1].children = IEnumerable<Child>
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities entity-framework-4

1
推荐指数
1
解决办法
8283
查看次数