C# ASP.NET-如何创建匿名类型的列表
我想在数据库中搜索用户,并在WHERE语句中创建新类型。 但是当我这样做的时候,我不能在我的列表中添加退货范围 我在“AllUsers.AddRange(user);”中得到错误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
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