我对C#列表并不擅长,因为它对我来说非常困惑。所以现在我加入了两张表,看起来像这样:
var final = queryTable
.Join(skillTable,
query => query.Id_Skill,
skill => skill.Id,
(query, skill) => new { Id = query.Id, Name = query.Name, Line1 = skill.Line1, Line2 = skill.Line2, Line3 = skill.Line3, Line4 = skill.Line4, Line5 = skill.Line5 })
.ToList();
因此,您可以看到新列表包含元素Id
,Name
,Line1
,Line2
,Line3
,Line4
和Line5
。
此列表的类型是什么? 我的意思是,我如何声明列表而不是var?我需要这个用于进一步的目的。
像:
List<theType> final = new List<theType>();
final = ...
答案 0 :(得分:3)
如果您稍后需要引用它,您可以创建一个包含所有这些属性的类
public class SomeName
{
int id { get; set; }
string Name { get; set; }
string Line1 { get; set; }
string Line2 { get; set; }
string Line3 { get; set; }
string Line4 { get; set; }
}
并更改您的查询以创建此类的新实例
var final = queryTable
.Join(skillTable,
query => query.Id_Skill,
skill => skill.Id,
(query, skill) => new SomeName() { Id = query.Id, Name = query.Name, Line1 = skill.Line1, Line2 = skill.Line2, Line3 = skill.Line3, Line4 = skill.Line4, Line5 = skill.Line5 })
.ToList();
答案 1 :(得分:2)
来自anonymous types的文档:(强调添加)
通常,当您使用匿名类型初始化变量时,可以使用var将变量声明为隐式类型的局部变量。 无法在变量声明中指定类型名称,因为只有编译器才能访问匿名类型的基础名称 。有关var的更多信息,请参阅Implicitly Typed Local Variables。
如果您想在执行查询后重用该类型,那么最好的选择可能是为此目的创建一个类。
另一种解决方案是使用Tuple
,这可以节省您创建另一个类,但如果您计划在太多位置引用该类型,则会很难使用。只有当您计划在同一方法中进一步操纵数据时,我才可能使用Tuple
。
(query, skill) => Tuple.Create(query.Id, query.Name, skill.Line1, skill.Line2,
skill.Line3, skill.Line4, skill.Line5 });
您最终会得到List<Tuple<int, string, .... >
答案 2 :(得分:0)
您正在使用new { }
语法创建匿名类型。这意味着您只能使用var
,除非您专门创建具有相同字段的类。