C# 使用linq选择列表
我在一个数据库中有两个表,一个类是C字母 表:tblUserId、Name、tblLetterId、UserId、Title 字母:Id、标题、用户名 我希望使用linq选择数据,并使用以下代码:C# 使用linq选择列表,c#,linq,C#,Linq,我在一个数据库中有两个表,一个类是C字母 表:tblUserId、Name、tblLetterId、UserId、Title 字母:Id、标题、用户名 我希望使用linq选择数据,并使用以下代码: List<Letter> lst = new List<Letter>(); lst = (from l in l.tblLetter.ToList() select new {l.Id, l.Title, UserName = l.tblUser.Name}
List<Letter> lst = new List<Letter>();
lst = (from l in l.tblLetter.ToList()
select new {l.Id, l.Title, UserName = l.tblUser.Name}
).ToList();
以及:
但是得到这个错误:
无法隐式转换类型
作为@SnowYetis注释,您实际上是在代码中选择一个新的匿名类型的实例。这就是新语法{…}的作用。请注意,在新指令之后没有类型名称 如果您的字母类型具有属性Id、Title、UserName,那么您需要做的就是将new{…}更改为new Letter{…}
如果没有,那么我们可能需要比您提供的更多的信息,例如,字母类型的定义。您的代码中有一些问题: l、 ToList返回表中的所有记录。通常在查询结束之前都不会调用ToList,以获取所需的数据,而不是更多 您希望在两个表之间进行联接以获得匹配的用户名 如果要返回字母集合,可以在select语句中创建该字母集合的实例,而不是创建匿名类型 试试这个:
var lst = (from l in l.tblLetter
join u in tblUser on l.UserId equals u.Id
select new Letter
{
Id = l.Id,
Title = l.Title,
UserName = u.Name
}).ToList();
发布完整异常。这是因为您返回的是匿名类型。因此,它无法将返回的类型转换为字母。@AnaMah您是否试图使用列表,因为您希望从Linq查询中获得强类型列表对象?我不希望使用var类型。我有选择的数据和列表将填补。实际上,var根本不是一种类型!在本例中,它是列表的简写。您可以键入List lst=from。。。完整,但生成的代码是相同的。如果确实需要填充现有列表,请省略.ToList并将linq查询的结果分配给IEnumerable。然后调用list.addRangeMeyEnumerable,如@grantwiney所示。
var lst = (from l in l.tblLetter
join u in tblUser on l.UserId equals u.Id
select new Letter
{
Id = l.Id,
Title = l.Title,
UserName = u.Name
}).ToList();