C# ASP.NET-如何创建匿名类型的列表

C# ASP.NET-如何创建匿名类型的列表,c#,asp.net,list,C#,Asp.net,List,我想在数据库中搜索用户,并在WHERE语句中创建新类型。 但是当我这样做的时候,我不能在我的列表中添加退货范围 我在“AllUsers.AddRange(user);”中得到错误 var alluser=new List(); 变量url=”https://localhost:44356/"; 字符串[]namelist=name.Split(“”); foreach(名称列表中的变量n) { var user=wait context.Users.Where(r=>r.FirstName.To

我想在数据库中搜索用户,并在WHERE语句中创建新类型。 但是当我这样做的时候,我不能在我的列表中添加退货范围

我在“AllUsers.AddRange(user);”中得到错误

var alluser=new List();
变量url=”https://localhost:44356/";
字符串[]namelist=name.Split(“”);
foreach(名称列表中的变量n)
{
var user=wait context.Users.Where(r=>r.FirstName.ToLower().Contains(n)| | r.LastName.ToLower().Contains(n))。选择(
u=>新
{
id=u.id,
Name=u.FirstName+u.LastName,
Beschreibung=美国描述,
Avatar=url+u.ProfileImagePath.Remove(0,58),
Header=url+u.headerImage.Remove(0,58),
}).ToListAsync();
AllUsers.AddRange(用户);
}
var mitglieder=alluser.Distinct().ToList();
返回Ok(mitglieder);

这是因为您的实体
用户
是一个
对象
,并且您试图将其存储在
字符串列表中
。 您可以创建一个新类
UserDto
,并存储
UserDto
的列表,而不是列表,因为您很可能会引用 稍后,userDto可能会对该匿名对象有用

//var AllUsers = new List<**string**>(); not this

var AllUsers = new List<UserDto>(); //this 

public class UserDto
{
    public int Id {get; set;}
    public string Name {get; set;}
    public string Beschreibung {get; set;}
    public string Avatar {get; set;}
    public string Header {get; set;}
}

var AllUsers = new List<object>(); //or this

//var alluser=new List();不是这个
var alluser=新列表()//这
公共类UserDto
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串Beschreibung{get;set;}
公共字符串Avatar{get;set;}
公共字符串头{get;set;}
}
var alluser=新列表()//还是这个

这是因为您的实体
用户
是一个
对象
,并且您试图将其存储在
字符串列表中
。 您可以创建一个新类
UserDto
,并存储
UserDto
的列表,而不是列表,因为您很可能会引用 稍后,userDto可能会对该匿名对象有用

//var AllUsers = new List<**string**>(); not this

var AllUsers = new List<UserDto>(); //this 

public class UserDto
{
    public int Id {get; set;}
    public string Name {get; set;}
    public string Beschreibung {get; set;}
    public string Avatar {get; set;}
    public string Header {get; set;}
}

var AllUsers = new List<object>(); //or this

//var alluser=new List();不是这个
var alluser=新列表()//这
公共类UserDto
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串Beschreibung{get;set;}
公共字符串Avatar{get;set;}
公共字符串头{get;set;}
}
var alluser=新列表()//还是这个

您的变量
AllUsers
是一个
列表
类型,
用户
是一个匿名对象类型,无法转换为
字符串

如果要对其使用匿名类型,可以执行以下操作:

var AllUsers = Enumerable.Empty<object>().Select(obj => new
{
    Id = default(int),
    Name = default(string),
    Beschreibung = default(string),
    Avatar = default(string),
    Header = default(string)
}).ToList();
var AllUsers=Enumerable.Empty().Select(obj=>new
{
Id=默认值(int),
名称=默认值(字符串),
Beschreibung=默认值(字符串),
化身=默认值(字符串),
Header=默认值(字符串)
}).ToList();

您的变量
AllUsers
是一个
列表
类型,
用户
是一个匿名对象类型,无法转换为
字符串

如果要对其使用匿名类型,可以执行以下操作:

var AllUsers = Enumerable.Empty<object>().Select(obj => new
{
    Id = default(int),
    Name = default(string),
    Beschreibung = default(string),
    Avatar = default(string),
    Header = default(string)
}).ToList();
var AllUsers=Enumerable.Empty().Select(obj=>new
{
Id=默认值(int),
名称=默认值(字符串),
Beschreibung=默认值(字符串),
化身=默认值(字符串),
Header=默认值(字符串)
}).ToList();

这个问题可能有几种解决方案,但我建议使用以下解决方案:

使用
Select
表达式中所需的所有字段创建一个类

public class UserViewModel
{
    public int Id {get; set;}
    public string Name {get; set;}
    public string Beschreibung {get; set;}
    public string Avatar {get; set;}
    public string Header {get; set;}
}
然后按如下方式修改代码:

var AllUsers = new List<UserViewModel>();
var url = "https://localhost:44356/";

string[] namelist = name.Split(" ");

foreach (var n in namelist)
{
    var user = await context.Users.Where(r => r.FirstName.ToLower().Contains(n) || r.LastName.ToLower().Contains(n))
           .Select(u => new UserViewModel
            {
                Id = u.Id, // if you have a string, then modify the model to support string values
                Name = u.FirstName + " " + u.LastName, // Added a space in first and last name
                Beschreibung = u.Description,
                Avatar = url + u.ProfileImagePath.Remove(0, 58),
                Header = url + u.HeaderImagePath.Remove(0, 58),
            }).ToListAsync();
    AllUsers.AddRange(user);
}

var mitglieder = AllUsers.GroupBy(g => g.Id).Distinct().ToList(); // You need to group the items so you can get the distinct items on the basis of ID.

return Ok(mitglieder);
var alluser=new List();
变量url=”https://localhost:44356/";
字符串[]namelist=name.Split(“”);
foreach(名称列表中的变量n)
{
var user=wait context.Users.Where(r=>r.FirstName.ToLower().Contains(n)| | r.LastName.ToLower().Contains(n))
.选择(u=>new UserViewModel
{
Id=u.Id,//如果有字符串,则修改模型以支持字符串值
Name=u.FirstName+“”+u.LastName,//在first和last Name中添加了一个空格
Beschreibung=美国描述,
Avatar=url+u.ProfileImagePath.Remove(0,58),
Header=url+u.headerImage.Remove(0,58),
}).ToListAsync();
AllUsers.AddRange(用户);
}
var mitglieder=alluser.GroupBy(g=>g.Id).Distinct().ToList();//您需要对项目进行分组,以便根据ID获得不同的项目。
返回Ok(mitglieder);

请注意,在
Distinct()
方法中,我们对元素进行了分组,这样您就可以实际获得不同的元素。

这个问题可能有几种解决方案,但我建议使用以下方法:

使用
Select
表达式中所需的所有字段创建一个类

public class UserViewModel
{
    public int Id {get; set;}
    public string Name {get; set;}
    public string Beschreibung {get; set;}
    public string Avatar {get; set;}
    public string Header {get; set;}
}
然后按如下方式修改代码:

var AllUsers = new List<UserViewModel>();
var url = "https://localhost:44356/";

string[] namelist = name.Split(" ");

foreach (var n in namelist)
{
    var user = await context.Users.Where(r => r.FirstName.ToLower().Contains(n) || r.LastName.ToLower().Contains(n))
           .Select(u => new UserViewModel
            {
                Id = u.Id, // if you have a string, then modify the model to support string values
                Name = u.FirstName + " " + u.LastName, // Added a space in first and last name
                Beschreibung = u.Description,
                Avatar = url + u.ProfileImagePath.Remove(0, 58),
                Header = url + u.HeaderImagePath.Remove(0, 58),
            }).ToListAsync();
    AllUsers.AddRange(user);
}

var mitglieder = AllUsers.GroupBy(g => g.Id).Distinct().ToList(); // You need to group the items so you can get the distinct items on the basis of ID.

return Ok(mitglieder);
var alluser=new List();
变量url=”https://localhost:44356/";
字符串[]namelist=name.Split(“”);
foreach(名称列表中的变量n)
{
var user=wait context.Users.Where(r=>r.FirstName.ToLower().Contains(n)| | r.LastName.ToLower().Contains(n))
.选择(u=>new UserViewModel
{
Id=u.Id,//如果有字符串,则修改模型以支持字符串值
Name=u.FirstName+“”+u.LastName,//在first和last Name中添加了一个空格
Beschreibung=美国描述,
Avatar=url+u.ProfileImagePath.Remove(0,58),
Header=url+u.headerImage.Remove(0,58),
}).ToListAsync();
AllUsers.AddRange(用户);
}
var mitglieder=alluser.GroupBy(g=>g.Id).Distinct().ToList();//您需要对项目进行分组,以便根据ID获得不同的项目。
返回Ok(mitglieder);
请注意,在
Distinct()
方法中,我们对元素进行了分组,以便您可以实际获得distin