无法从查询返回linq结果

本文关键字:linq 结果 返回 查询 | 更新日期: 2023-09-27 18:08:37

嘿,我对C#相当陌生,因为在开始这项工作之前我从未使用过它。我试图从linq查询返回结果集。然而,我的问题是它的类型是匿名的。我试着为它创建一个自定义类型,所以我可以使用它,但我仍然得到一个错误:

Severity    Code    Description Project File    Line    Suppression State
Error   CS0266  Cannot implicitly convert type 'System.Linq.IQueryable<<anonymous type:
SCSEntities.SCS_ItemCategory Category, SCSEntities.SCS_Item Item>>' to 
'System.Collections.Generic.List<SchoolCash.DataFactory.ItemFactory.ExportItemTable>'. 
An explicit conversion exists (are you missing a cast?) SchoolCash.DataFactory  
C:'seamysCode'SCA'4.12'Common'SchoolCash.DataFactory'ItemFactory.cs 551 Active

所以我想知道我在这里错过了一些东西,因为我看到的东西说,根据需要创建一个带有get和setter的自定义类型。那我就可以退了。我想知道有人可以帮助我,因为从我有限的眼睛可以看到我做得正确。我提前感谢你的帮助。

   public class ExportItemTable
    {
        public SCS_ItemCategory Category { get; set; }
        public Item Item { get; set; }
    }
    public List<ExportItemTable> GetItemExportTable()
    {
        var result =
        from item in Context.SCS_Items
        join category in Context.SCS_ItemCategories
        on item.ItemPk equals category.ItemFk
        into temp
        from category in temp.DefaultIfEmpty()
        select new
        {
        Category = category,
        Item = item
        };
        return result.ToList();;
    }

无法从查询返回linq结果

下面的代码创建了一个匿名类型:

select new
{
    Category = category,
    Item = item
}

您只需要像这样创建一个所需类型的实例:

select new ExportItemTable()
{
    Category = category,
    Item = item
}

在某些语言中(比如TypeScript),如果你有一个对象匹配了预期类型的属性,编译器会将它们视为相同的东西。c#不会这样做,而是强制您显式地创建您想要使用的类型的实例。