Asp.net mvc Net Mvc Linq问题

Asp.net mvc Net Mvc Linq问题,asp.net-mvc,linq,Asp.net Mvc,Linq,我知道我的问题很基本。如果我写/api/category/1,我想列出categoryId==1的所有故事。我写了这段代码,但它给出了一个错误 [HttpGet] public IEnumerable<Tale> GetAllTalesByCategory(int id) { var tales = TaleService.FindAllTale().Select(x => new Tale { TaleId = x.TaleId,

我知道我的问题很基本。如果我写
/api/category/1
,我想列出
categoryId==1
的所有故事。我写了这段代码,但它给出了一个错误

[HttpGet]
public IEnumerable<Tale> GetAllTalesByCategory(int id)
{
    var tales = TaleService.FindAllTale().Select(x => new Tale
    {
        TaleId = x.TaleId,
        TaleName = x.TaleName,
        Content = x.Content,
        VoicePath = x.VoicePath
    }).Where(x => new Tale
    {
        x.Categories.Select(c => c.CategoryId).First() == id                    
    });
}
型号:

Error   1   Cannot initialize type 'MasalYuvasi.Entities.Tale' with a collection initializer because it does not implement 'System.Collections.IEnumerable' D:\MvcProject\MasalYuvasi\MasalYuvasi\Controllers\DenemeController.cs   33  13  MasalYuvasi
public class Tale
{
    public int TaleId { get; set; }
    public string TaleName { get; set; }
    public string Content { get; set; }
    public string VoicePath { get; set; }
    public virtual ICollection<Category> Categories { get; set; }
    public Tale()
    {
        this.Categories = new List<Category>();
    }   
}

public class Category
{
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public virtual ICollection<Tale> Tales { get; set; }
    public Category()
    {
        this.Tales = new List<Tale>();
    }
}
公共类
{
公共int-TaleId{get;set;}
公共字符串TaleName{get;set;}
公共字符串内容{get;set;}
公共字符串语音路径{get;set;}
公共虚拟ICollection类别{get;set;}
公共故事()
{
this.Categories=新列表();
}   
}
公共类类别
{
public int CategoryId{get;set;}
公共字符串CategoryName{get;set;}
公共虚拟ICollection{get;set;}
公共类别()
{
this.Tales=新列表();
}
}
试试这个:

[HttpGet]
public IEnumerable<Tale> GetAllTalesByCategory(int id)
{
    var tales = TaleService.FindAllTale().Select(x => new Tale
    {
        TaleId = x.TaleId,
        TaleName = x.TaleName,
        Content = x.Content,
        VoicePath = x.VoicePath
    }).Where(x => x.Categories.Select(c => c.CategoryId).First() == id).ToList();
}
[HttpGet]
公共IEnumerable GetAllTalesByCategory(int id)
{
var tales=TaleService.FindAllTale()。选择(x=>new tales
{
TaleId=x.TaleId,
TaleName=x.TaleName,
Content=x.Content,
VoicePath=x.VoicePath
}).Where(x=>x.Categories.Select(c=>c.CategoryId).First()==id.ToList();
}
修复了where条件,并添加了
.ToList()

尝试以下操作:

[HttpGet]
public IEnumerable<Tale> GetAllTalesByCategory(int id)
{
    var tales = TaleService.FindAllTale().Select(x => new Tale
    {
        TaleId = x.TaleId,
        TaleName = x.TaleName,
        Content = x.Content,
        VoicePath = x.VoicePath
    }).Where(x => x.Categories.Select(c => c.CategoryId).First() == id).ToList();
}
[HttpGet]
公共IEnumerable GetAllTalesByCategory(int id)
{
var tales=TaleService.FindAllTale()。选择(x=>new tales
{
TaleId=x.TaleId,
TaleName=x.TaleName,
Content=x.Content,
VoicePath=x.VoicePath
}).Where(x=>x.Categories.Select(c=>c.CategoryId).First()==id.ToList();
}
修复了where条件,并添加了
.ToList()

尝试以下操作:

[HttpGet]
public IEnumerable<Tale> GetAllTalesByCategory(int id)
{
    var tales = TaleService.FindAllTale().Select(x => new Tale
    {
        TaleId = x.TaleId,
        TaleName = x.TaleName,
        Content = x.Content,
        VoicePath = x.VoicePath
    }).Where(x => x.Categories.Select(c => c.CategoryId).First() == id).ToList();
}
[HttpGet]
公共IEnumerable GetAllTalesByCategory(int id)
{
var tales=TaleService.FindAllTale()。选择(x=>new tales
{
TaleId=x.TaleId,
TaleName=x.TaleName,
Content=x.Content,
VoicePath=x.VoicePath
}).Where(x=>x.Categories.Select(c=>c.CategoryId).First()==id.ToList();
}
修复了where条件,并添加了
.ToList()

尝试以下操作:

[HttpGet]
public IEnumerable<Tale> GetAllTalesByCategory(int id)
{
    var tales = TaleService.FindAllTale().Select(x => new Tale
    {
        TaleId = x.TaleId,
        TaleName = x.TaleName,
        Content = x.Content,
        VoicePath = x.VoicePath
    }).Where(x => x.Categories.Select(c => c.CategoryId).First() == id).ToList();
}
[HttpGet]
公共IEnumerable GetAllTalesByCategory(int id)
{
var tales=TaleService.FindAllTale()。选择(x=>new tales
{
TaleId=x.TaleId,
TaleName=x.TaleName,
Content=x.Content,
VoicePath=x.VoicePath
}).Where(x=>x.Categories.Select(c=>c.CategoryId).First()==id.ToList();
}

修复了where条件,并添加了
.ToList()

问题是您的代码在此处使用了:

我不确定这段代码应该做什么,但作为
x.Categories.Select(c=>c.CategoryId)。First()==id
将返回bool,我认为这并不是您想要的


根据您的评论:


我想把它列在故事的类别中。例如,我有两个故事,分类是1。如果我写“/api/category/1”,我想列出这两个故事

我认为你在寻找比你现有的更简单的东西。您要选择类别id为
id
的故事(由
x
表示):

.Where(x => x.Categories.Any(c => c.CategoryId == id ));

请注意,您可以通过pjobs将
.ToList()
附加到where子句的末尾,但这可能会对应用程序的行为产生微妙的影响。有关更多详细信息,请参见。

问题在于您的代码使用了以下选项:

我不确定这段代码应该做什么,但作为
x.Categories.Select(c=>c.CategoryId)。First()==id
将返回bool,我认为这并不是您想要的


根据您的评论:


我想把它列在故事的类别中。例如,我有两个故事,分类是1。如果我写“/api/category/1”,我想列出这两个故事

我认为你在寻找比你现有的更简单的东西。您要选择类别id为
id
的故事(由
x
表示):

.Where(x => x.Categories.Any(c => c.CategoryId == id ));

请注意,您可以通过pjobs将
.ToList()
附加到where子句的末尾,但这可能会对应用程序的行为产生微妙的影响。有关更多详细信息,请参见。

问题在于您的代码使用了以下选项:

我不确定这段代码应该做什么,但作为
x.Categories.Select(c=>c.CategoryId)。First()==id
将返回bool,我认为这并不是您想要的


根据您的评论:


我想把它列在故事的类别中。例如,我有两个故事,分类是1。如果我写“/api/category/1”,我想列出这两个故事

我认为你在寻找比你现有的更简单的东西。您要选择类别id为
id
的故事(由
x
表示):

.Where(x => x.Categories.Any(c => c.CategoryId == id ));

请注意,您可以通过pjobs将
.ToList()
附加到where子句的末尾,但这可能会对应用程序的行为产生微妙的影响。有关更多详细信息,请参见。

问题在于您的代码使用了以下选项:

我不确定这段代码应该做什么,但作为
x.Categories.Select(c=>c.CategoryId)。First()==id
将返回bool,我认为这并不是您想要的


根据您的评论:


我想把它列在故事的类别中。例如,我有两个故事,分类是1。如果我写“/api/category/1”,我想列出这两个故事

我认为你在寻找比你现有的更简单的东西。您要选择类别id为
id
的故事(由
x
表示):

.Where(x => x.Categories.Any(c => c.CategoryId == id ));

请注意,您可以通过pjobs将
.ToList()
附加到where子句的末尾,但这可能会对应用程序的行为产生微妙的影响。有关更多详细信息,请参见。

请参见“您的
FindAllTale()
返回什么?IEnumerable是返回值。请参见“您的
FindAllTale()
返回什么?”