gpt4 book ai didi

c# - 如何将变量定义为类型列表<<>f_AnonymousType1>

转载 作者:太空狗 更新时间:2023-10-30 00:48:00 25 4
gpt4 key购买 nike

我在监 window 口中看到以下 LINQ 语句

model.UserLanguages = (from u in db.Users
join l in db.Languages on u.LanguageId equals l.Id
select new {UserName = u.LastName, Language = l.Name}).ToList();

返回类型为 System.Collections.Generic.List<<>f_AnonymousType1<string,string>> 的变量.

我需要将其分配给模型类的属性,因此我需要能够明确命名其类型。像这样:

public List<{string, string}> UserLanguages { get; set; }

但是由于这不是正确的语法,所以我当然会得到一个错误。

当我将它设置为:

public List<object> UserLanguages { get; set; }

我得到错误:

The type "System.Collections.Generic.List<<anonymous type: string UserName, string Language>>" cannot be converted to "System.Collections.Generic.List<object>"

最佳答案

你不能那样做,匿名类只是——好吧,匿名——它没有一个你可以在任何地方使用的名字。来自 MSDN :

You cannot declare a field, a property, an event, or the return type of a method as having an anonymous type.

相反,只需创建一个命名类,然后创建它的一个实例

class MyClass
{
public string UserName { get; set; }
public string Language { get; set; }
}

现在根据您的查询创建此类的实例:

model.UserLanguages = (from u in db.Users
join l in db.Languages on u.LanguageId equals l.Id
select new MyClass {UserName = u.LastName, Language = l.Name}).ToList();

哪里UserLanguagesList<MyClass> .这让您的 API 的任何用户都清楚,最后一个实例中有一个 UserName。和一个 Language .

没有类的另一种方法是使用 Dictionary<string, string>反而。

model.UserLanguages = (from u in db.Users
join l in db.Languages on u.LanguageId equals l.Id
select new MyClass {UserName = u.LastName, Language = l.Name}).ToDictionary(x => x.UserName, x => x.LastName);

但这似乎不太直观,因为用户必须知道 Key适用于 UserName , 而 ValueLanguage .

关于c# - 如何将变量定义为类型列表<<>f_AnonymousType1<string,string>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51305481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com