Select 来自 Sql 服务器的不同记录 Entity Framework 在 .Net Core 5 中使用存储库模式
Select Distinct Records From Sql Server With Entity Framework Using Repository Pattern In .Net Core 5
我正在将存储库模式与 .Net Core Web 应用程序一起使用,该应用程序与 .Net Core Web API 控制器方法从 Sql 服务器获取记录。
在 Web API 控制器方法中,我在存储库中调用一个方法,该方法必须 return 基于 Sql 服务器数据库中特定字段的不同消息列表像 PhoneNumberTo。但是,当我 return 将列表返回到 API 方法时,似乎出现了一些转换错误。这是调用存储库的 Web API 控制器方法:
[HttpGet]
[Route("GetUniqueMessages")]
public IActionResult GetUniqueMessages()
{
var messages = _unitOfWork.MessagesViewModel.GetDistinctMessages();
return new JsonResult(messages);
}
这是我的存储库方法,它必须 return 不同消息的列表:
public IEnumerable<Message> GetDistinctMessages()
{
List<Message> result = _context.Messages.Select(m => m.PhoneNumberTo).Distinct().ToList();
return result;
}
这是我在存储库方法上收到的错误消息的屏幕截图。
更新:
这是我的留言 class:
任何专家建议将不胜感激。
你有两个选择。
如果您只需要获取 phone 个号码的列表
public IEnumerable<string> GetDistinctMessages()
{
return _context.Messages.Select(m => m.PhoneNumberTo).Distinct().ToArray();
}
如果您需要一个消息列表,您不能拥有所有不同的字段,就像这样
public IEnumerable<Message> GetDistinctMessages()
{
return _context.Messages.Distinct().ToArray();
}
我提供给你获取 MessageTo MessageFrom 和 MessageText 看看区别
public IEnumerable<Message> GetDistinctMessages()
{
return _context.Messages
.GroupBy(p => new {p.MessageTo, p.MessageFrom} )
.Select(g => new Message
{
MessageTo = g.Key.MessageTo,
MessageFrom = g.Key.MessageFrom,
MessageText= g.MessageText
}).ToArray();
您可以使用此查询并根据需要添加任意数量的字段
你仍然可以保留现有的操作,但我推荐这个
[HttpGet]
[Route("GetUniqueMessages")]
public IActionResult GetUniqueMessages()
{
var messages = _unitOfWork.MessagesViewModel.GetDistinctMessages();
return Ok(messages);
}
我正在将存储库模式与 .Net Core Web 应用程序一起使用,该应用程序与 .Net Core Web API 控制器方法从 Sql 服务器获取记录。
在 Web API 控制器方法中,我在存储库中调用一个方法,该方法必须 return 基于 Sql 服务器数据库中特定字段的不同消息列表像 PhoneNumberTo。但是,当我 return 将列表返回到 API 方法时,似乎出现了一些转换错误。这是调用存储库的 Web API 控制器方法:
[HttpGet]
[Route("GetUniqueMessages")]
public IActionResult GetUniqueMessages()
{
var messages = _unitOfWork.MessagesViewModel.GetDistinctMessages();
return new JsonResult(messages);
}
这是我的存储库方法,它必须 return 不同消息的列表:
public IEnumerable<Message> GetDistinctMessages()
{
List<Message> result = _context.Messages.Select(m => m.PhoneNumberTo).Distinct().ToList();
return result;
}
这是我在存储库方法上收到的错误消息的屏幕截图。
更新:
这是我的留言 class:
任何专家建议将不胜感激。
你有两个选择。
如果您只需要获取 phone 个号码的列表
public IEnumerable<string> GetDistinctMessages()
{
return _context.Messages.Select(m => m.PhoneNumberTo).Distinct().ToArray();
}
如果您需要一个消息列表,您不能拥有所有不同的字段,就像这样
public IEnumerable<Message> GetDistinctMessages()
{
return _context.Messages.Distinct().ToArray();
}
我提供给你获取 MessageTo MessageFrom 和 MessageText 看看区别
public IEnumerable<Message> GetDistinctMessages()
{
return _context.Messages
.GroupBy(p => new {p.MessageTo, p.MessageFrom} )
.Select(g => new Message
{
MessageTo = g.Key.MessageTo,
MessageFrom = g.Key.MessageFrom,
MessageText= g.MessageText
}).ToArray();
您可以使用此查询并根据需要添加任意数量的字段
你仍然可以保留现有的操作,但我推荐这个
[HttpGet]
[Route("GetUniqueMessages")]
public IActionResult GetUniqueMessages()
{
var messages = _unitOfWork.MessagesViewModel.GetDistinctMessages();
return Ok(messages);
}