首页 > 解决方案 > ASP.NET - 我如何创建具有匿名类型的列表

问题描述

我想在我的数据库中搜索用户并在 WHERE 语句中创建新类型。但是当我这样做时,我无法在我的列表中添加范围以进行返回。

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

        var AllUsers = new List<string>();
        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
                {
                    id = u.Id,
                    Name = u.FirstName + u.LastName,
                    Beschreibung = u.Description,
                    Avatar = url + u.ProfileImagePath.Remove(0, 58),
                    Header = url + u.HeaderImagePath.Remove(0, 58),

                }).ToListAsync();

            AllUsers.AddRange(user);
            
            
        }

        var mitglieder = AllUsers.Distinct().ToList();

        return Ok(mitglieder);

标签: c#asp.netlist

解决方案


那是因为您的实体user是 anobject并且您正试图将其存储在strings. 您可以创建一个新的类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


推荐阅读