从列表中获取值并希望获取具有列表作为属性的项的id

时间:2015-03-22 20:11:57

标签: c# asp.net asp.net-mvc linq

我的问题是:

public ActionResult DeleteImage(string imagepath)
{
    int tourid = db.Tours.Where(x => x.Images.Where(y => y.Path == imagepath));

...

我参观了一系列图片。图像有路径。我的控制器知道文件的路径,但我需要游览的ID。使用foreach很容易,但我想用linq解决问题。

感谢
编辑: Foreach解决方案:

int tourid;
foreach (var tour in db.Tours.ToList())
{
    foreach (var image in tour.Images)
    {
        if (image.Path == imagepath)
        {
            tourid = tour.TourID;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您可以使用FirstOrDefaultFirstAny

int tourId = db.Tours.First(tour => tour.Images.Any(img => img.Path == imagepath)).Id;

如果游览不存在,这将抛出异常 以下不会

int tourId = -1;
var tour = db.Tours.
    FirstOrDefault(tour => tour.Images.Any(img => img.Path == imagepath));

if (tour != null)
{
    tourId = tour.Id;
}

这基本上转化为 “在游览中,找到图片First等于Any的{​​{1}} Path

imagepath上有很多教程。我建议你调查一下!