我如何以匿名类型返回列表,因为使用此代码我得到
“无法找到类型或命名空间名称'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();
}
}
答案 0 :(得分:11)
Tuple&lt;&gt; 类适用于此类情况。如已建议的那样创建自定义类更清晰,但Tupple也完成了工作。
e.g。
.Select(row => new Tuple<int,string>(row.IdMember,row.Profile_Information.UserName))
要访问电线另一侧的成员属性,您需要使用:
var id=t.Item1
var name=t.Item2
答案 1 :(得分:5)
因为您要返回匿名类型的对象,所以不能在方法的返回类型中声明它。您尝试使用通用<T>
将不适用于此。没有类型安全的方法来声明这样的方法。如果您将退货类型声明为IList
,那么这应该有效,但您仍然没有类型安全。
你最好宣布这种类型。
<强>更新强>
声明一个简单的返回类型并不是那么糟糕。你可以写一个这样的类:
public class MemberItem
{
public string IdMember { get; set; }
public string UserName { get; set; }
}
然后像这样编写你的方法:
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();
}
}
答案 2 :(得分:3)
匿名类型的范围仅限于定义它们的方法。在您的情况下,您最好使用相关属性声明一个单独的类,并返回该类实例的集合。例如,
public class UserDetail
{
public int Id{get;set;}
public string UserName {get;set;}
}
public static List<UserDetail> 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 UserDetail{ IdMember = row.IdMember, UserName = row.Profile_Information.UserName });
return items.ToList();
}
}
答案 3 :(得分:1)
只需使用和ArrayList
public static ArrayList GetMembersItems(string ProjectGuid)
{
ArrayList items = new ArrayList();
items.AddRange(yourVariable
.Where(p => p.Knowledge_Project.Guid == ProjectGuid)
.ToList());
return items;
}
答案 4 :(得分:1)
您可以通过将匿名类型转换为Object来返回匿名类型,但这很少有用。但是,如果你从一个WebApi控制器返回它作为一个快速和(不那么)脏DTO然后我认为它是完全正常的。 这仅适用于JSON。 XML会抱怨架构或其他东西,但现在每个人都使用JSON:)
#!/usr/bin/env python3
import os
target_filename = 'filtered_data.tar.gz'
top_src_dir = '.'
top_dest_dir = 'dest'
# Walk the source directory recursively looking for
# target_filename
for parent, dirs, files in os.walk(top_src_dir):
# debugging
# print(parent, dirs, files)
# Skip this directory if target_filename not found
if target_filename not in files:
continue
# Strip off all path parts except the immediate parent
local_parent = os.path.split(parent)[-1]
# Compute the full, relative path to the symlink
dest_file = os.path.join(top_dest_dir, local_parent, target_filename)
# debugging
# print('{} {}'.format(dest_file, os.path.exists(dest_file)))
# Nothing to do if it already exists
if os.path.exists(dest_file):
print('{} already exists'.format(dest_file))
continue
# Make sure the destination path exists
dest_dir = os.path.dirname(dest_file)
os.makedirs(dest_dir, exist_ok=True)
# Translate the relative path to target_filename
# to be relative based on the new destination dir
src_file = os.path.join(parent, target_filename)
src_file = os.path.relpath(src_file, start=dest_dir)
os.symlink(src_file, dest_file)
print('{} --> {}'.format(dest_file, src_file))
答案 5 :(得分:0)
您可以返回类型:NameValueCollection或KeyValuePair。 匿名类型不能是返回类型。