C# 如何使用“添加范围”和“选择条件”组合到通用列表?

C# 如何使用“添加范围”和“选择条件”组合到通用列表?,c#,.net,entity-framework,linq,C#,.net,Entity Framework,Linq,如何使用“添加范围”和“选择条件”组合到通用列表?这是一个虚构的例子。我可以添加范围,但不能根据房间类型等条件进行过滤。“Select(mr=>mr.Type==RoomType.卧房)”不起作用。我可以使用什么来代替将列表附加到type=doomy的位置 public enum RoomType { Bathroom = 1, BedRoom = 2, Kitchen = 3, RecRoom = 4 } public class RoomsModel {

如何使用“添加范围”和“选择条件”组合到通用列表?这是一个虚构的例子。我可以添加范围,但不能根据房间类型等条件进行过滤。“Select(mr=>mr.Type==RoomType.卧房)”不起作用。我可以使用什么来代替将列表附加到type=doomy的位置

public enum RoomType
{
    Bathroom = 1,
    BedRoom = 2,
    Kitchen = 3,
    RecRoom = 4
}

public class RoomsModel
{
    public RoomType Type { get; set; }
    public int Size { get; set; }
}

public List<RoomsModel> GetRooms(params)
{
    var result = new List<RoomsModel>();

    result = _service.GetRooms(house1);

    var moreRooms _service.GetRooms(house2);

    result.AddRange((from mr in moreRooms
                 select new RoomsModel
                 {
                     Type = mr.Type,
                     Size = mr.Size
                 }
                 ).Select(mr => mr.Type == RoomType.BedRoom).ToList());

    return result;
}
公共枚举房间类型
{
浴室=1,
卧室=2间,
厨房=3,
休息室=4
}
公共教室模型
{
公共RoomType类型{get;set;}
公共整数大小{get;set;}
}
公共列表GetRooms(参数)
{
var result=新列表();
结果=_service.GetRooms(house1);
var moreRooms _service.GetRooms(第2栋);
结果.AddRange((来自moreRooms中的mr
选择新RoomsModel
{
类型=类型先生,
大小=先生大小
}
).Select(mr=>mr.Type==RoomType.卧房).ToList());
返回结果;
}

您需要使用
Where
而不是
选择

result.AddRange(
  from mr in moreRooms
  where mr.Type == RoomType.BedRoom
  select new RoomsModel
  {
    Type = mr.Type,
    Size = mr.Size
  });
result.AddRange((来自moreRooms中的mr)
选择新RoomsModel
{
类型=类型先生,
大小=先生大小
}
).Where(mr=>mr.Type==RoomType.卧房).ToList());

您需要使用
Where
而不是
选择

result.AddRange(
  from mr in moreRooms
  where mr.Type == RoomType.BedRoom
  select new RoomsModel
  {
    Type = mr.Type,
    Size = mr.Size
  });
result.AddRange((来自moreRooms中的mr)
选择新RoomsModel
{
类型=类型先生,
大小=先生大小
}
).Where(mr=>mr.Type==RoomType.卧房).ToList());

使用
Where
代替
选择

result.AddRange(
  from mr in moreRooms
  where mr.Type == RoomType.BedRoom
  select new RoomsModel
  {
    Type = mr.Type,
    Size = mr.Size
  });

其中
过滤项目<代码>选择项目,即将序列中的每个项目转换为其他项目。

使用
Where
而不是
选择项目:

result.AddRange(
  from mr in moreRooms
  where mr.Type == RoomType.BedRoom
  select new RoomsModel
  {
    Type = mr.Type,
    Size = mr.Size
  });
其中
过滤项目<代码>选择项目,即将序列中的每个项目转换为其他项目。

另一种方式:

 result.AddRange(moreRooms.Where(mr => mr.Type == RoomType.BedRoom)
   .Select(mr => new RoomsModel {
     Type = mr.Type, 
     Size = mr.Size
   }));
还有一种方法:

 result.AddRange(moreRooms.Where(mr => mr.Type == RoomType.BedRoom)
   .Select(mr => new RoomsModel {
     Type = mr.Type, 
     Size = mr.Size
   }));

我以一点点的优势击败了你,但是使用100%LINQ完成这项工作+1。我真的不确定LINQ是否有
where
clausesI在这方面比你略胜一筹,但是+1是因为在工作中使用了100%的LINQ。不确定LINQ是否有
where
子句