我的问题是:
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;
}
}
}
答案 0 :(得分:3)
您可以使用FirstOrDefault
或First
和Any
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
上有很多教程。我建议你调查一下!