【发布时间】:2010-12-28 13:57:23
【问题描述】:
我有一些 linq to sql 方法,当它执行查询时,它会返回一些匿名类型。
我想将该匿名类型返回到我的服务层,以便对其进行一些逻辑和处理。
我不知道怎么退货。
我以为我能做到这一点
public List<T> thisIsAtest()
{
return query;
}
但我收到此错误
Error 1 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
所以不确定我缺少哪个程序集,或者是否是这种情况。
谢谢
编辑
好的,我的第一个问题已经解决,但现在我有一个新问题,我不知道如何解决,因为我对匿名类型了解不多。
我收到此错误
不能隐式转换类型 'System.Collections.Generic.List' 到'System.Collections.Generic.List
这里是查询
DbContext.Table.Where(u => u.Table.UserId == userId && u.OutOFF != 0)
.GroupBy(u => new { u.Table.Prefix })
.Select(group => new { prefix = group.Key,
Marks = group.Sum(item => (item.Mark * item.Weight) / item.OutOFF) })
.ToList();
编辑 2
public class ReturnValue
{
string prefix { get; set; }
decimal? Marks { get; set; }
}
public List<ReturnValue> MyTest(Guid userId)
{
try
{
var result = dbContext.Table.Where(u => u.Table.UserId == userId && u.OutOFF != 0).GroupBy(u => new { u.Table.Prefix })
.Select(group => new { prefix = group.Key, Marks = group.Sum(item => (item.Mark * item.Weight) / item.OutOFF) }).ToList();
return result;
}
catch (SqlException)
{
throw;
}
选择里面有这个
Anonymous Types:
a is new{string Prefix}
b is new{ 'a prefix, decimal? marks}
【问题讨论】:
-
为什么不能只定义一个新类型
class ReturnValue { int prefix; decimal Marks; }然后返回一个new ReturnValue(....)而不是匿名类型?? -
我需要一个例子。我在进行此查询时得到了帮助,它可以满足我的要求,但如果可以更改或添加一些内容以使其不是匿名的,我完全赞成。
-
你没有使用我提到的代码!在
.Select()中,您需要使用:.Select(group => new RETURNVALUE { prefix = group.Key, ...- 这不是您所拥有的!您没有添加在 .Select() 中创建的 TYPE - 那是您的问题
标签: c# .net generics anonymous-types anonymous-methods