Pab*_*ind 9 c# linq asp.net entity-framework
我如何以匿名类型返回列表,因为我得到了这个代码
"找不到类型或命名空间名称'T'(您是否缺少using指令或程序集引用?)"
我只需要返回IdMember和UserName,谢谢
public static List<T> GetMembersItems(string ProjectGuid)
{
using (PMEntities context = new PMEntities("name=PMEntities"))
{
var items = context.Knowledge_Project_Members.Include("Knowledge_Project").Include("Profile_Information")
.Where(p => p.Knowledge_Project.Guid == ProjectGuid)
.Select(row => new { IdMember = row.IdMember, UserName = row.Profile_Information.UserName });
return items.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
sgt*_*gtz 11
Tuple <>类是为这种情况而设计的.如已建议的那样创建自定义类更清晰,但Tupple也完成了工作.
例如
.Select(row => new Tuple<int,string>(row.IdMember,row.Profile_Information.UserName))
Run Code Online (Sandbox Code Playgroud)
要访问电线另一侧的成员属性,您需要使用:
var id=t.Item1
var name=t.Item2
Run Code Online (Sandbox Code Playgroud)
因为您要返回匿名类型的对象,所以不能在方法的返回类型中声明它.您尝试使用通用<T>
将不适用于此.没有类型安全的方法来声明这样的方法.如果你声明你的返回类型IList
应该有效,但你仍然没有类型安全.
你真的只是更好地宣布这种类型.
更新:
声明一个简单的返回类型并不是那么糟糕.你可以写一个这样的类:
public class MemberItem
{
public string IdMember { get; set; }
public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后像这样编写你的方法:
public static List<MemberItem> GetMembersItems(string ProjectGuid)
{
using (PMEntities context = new PMEntities("name=PMEntities"))
{
var items = context.Knowledge_Project_Members.Include("Knowledge_Project").Include("Profile_Information")
.Where(p => p.Knowledge_Project.Guid == ProjectGuid)
.Select(row => new MemberItem { IdMember = row.IdMember, UserName = row.Profile_Information.UserName });
return items.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)