Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq_Entity Framework - Fatal编程技术网

C# 如何交换两个子实体值

C# 如何交换两个子实体值,c#,linq,entity-framework,C#,Linq,Entity Framework,我有一个叫做“空间”的实体,里面有“图像”。Images有一个排序属性,它是int。我试图看看是否有一个简单的linq可以用来交换排序值 public class Space { public int SpaceId { get; set; } public virtual ICollection<SpaceImage> Images { get; set; } } public class SpaceImage { public int SpaceImag

我有一个叫做“空间”的实体,里面有“图像”。Images有一个排序属性,它是int。我试图看看是否有一个简单的linq可以用来交换排序值

public class Space
{
    public int SpaceId { get; set; }
    public virtual ICollection<SpaceImage> Images { get; set; }
}

public class SpaceImage
{
    public int SpaceImageId { get; set; }
    public byte[] Image { get; set; }
    public byte[] ImageThumbnail { get; set; }
    public string ContentType { get; set; }
    public int Ordering { get; set; }
}

通常,LINQ将用于查询。您可以使用它查找适当的
SpaceImage
实例,然后适当地设置值:

// Assuming this is a method in the Space class
public void Swap(int oldOrder, int newOrder)
{
    var oldInst = this.Images.FirstOrDefault(si => si.Ordering == oldOrder);
    var newInst = this.Images.FirstOrDefault(si => si.Ordering == newOrder);

    if (oldInst != null && newInst != null)
    {
        oldInst.Ordering = newOrder;
        newInst.Ordering = oldOrder;
    }
    else
    {
        // There weren't matching images - handle that case here
    }
}

你不应该把你想交换订单的
SpaceImageId
传进来吗?我不这么认为。我正在通过“Space”实体访问图像数据。如果是这样,那么就不需要
spaceId
,因为它已经是实体的一部分了。我想我确实需要spaceId。Space和SpaceImage具有一对多关系。因此,我想将图像顺序交换为与特定空间ID相关的图像,我如何通过我的“空间”存储库将这些图像保存回去?我没有图像回购,只有一个用于“Space”@user1186050的图像回购,这是在实体上。这将设置这些对象的属性,因此请以正常方式保存。目前,我只能进行SpacerPO.insertorupdate(space)调用。如果我将这两个图像设置回空间,然后将空间传递给repo,则会保存已更新的图像数据吗?@user1186050取决于repo,但通常是。
// Assuming this is a method in the Space class
public void Swap(int oldOrder, int newOrder)
{
    var oldInst = this.Images.FirstOrDefault(si => si.Ordering == oldOrder);
    var newInst = this.Images.FirstOrDefault(si => si.Ordering == newOrder);

    if (oldInst != null && newInst != null)
    {
        oldInst.Ordering = newOrder;
        newInst.Ordering = oldOrder;
    }
    else
    {
        // There weren't matching images - handle that case here
    }
}