Asp.net 如何从函数返回泛型列表(T)

Asp.net 如何从函数返回泛型列表(T),asp.net,asp.net-mvc,vb.net,Asp.net,Asp.net Mvc,Vb.net,我的类中有以下函数,我想将其作为泛型列表返回 Public Function ProductTitlePrice(Of T)() As List(Of T) Implements IProductRepository.ProductTitlePrice Dim v = (From F In _db.Fstock Where F.GUID = 2 Select F.STK_NAME, F.SELL_PRICE ).ToList Return v

我的类中有以下函数,我想将其作为泛型列表返回

Public Function ProductTitlePrice(Of T)() As List(Of T) Implements IProductRepository.ProductTitlePrice

    Dim v = (From F In _db.Fstock Where F.GUID = 2
        Select F.STK_NAME, F.SELL_PRICE
        ).ToList


    Return v

End Function
我得到的错误是

Error   2   Value of type 'System.Collections.Generic.List(Of <anonymous type>)' cannot be converted to 'System.Collections.Generic.List(Of T)'.

如何从函数中返回查询,然后在UI层中处理输出。

我最终得到了以下解决方案

  • Styxxy建议的DTO新项目

  • 然后使用UL中的Automapper将DTO映射到我的ViewModels


这是来源:

既然你这么做了,你就不能-泛型(
Of t
)不是匿名的!泛型是指在调用时给出参数类型,匿名是指动态创建的一组新数据。编译器无法返回未知类型resp。将未知类型转换为T。如果您想要真正动态,最好的选择可能是某个键/值对,或者如果您要经常使用它,只需创建并填充一个类型化模型。啊哈,那么我如何返回匿名列表?我只想从我的函数返回数据,然后在一个单独的项目中填充我的viewModels。我不认为在这里使用泛型是正确的。您应该定义一个具有STK_NAME和SELL_PRICE属性的模型,并返回该类型的列表。您不能返回匿名类型!如果不想使用DAL,则创建一个类型化的
业务层
(作为抽象模型)并使用它。因此,在共享类库中定义DTO(数据传输对象)。使用两个属性(STK_名称和售价)定义DTO,并返回此DTO类型的列表。
var query = from ug in ent.userGroups
            join u in ent.Users on ug.OwnerUserId = ug.userID
            select new
            {
                Name = u.UserName,
                Id = u.userID
                Group = ug.GroupName
            };