c# - 带有字符串连接的 LINQ 动态表达式
问题描述
我从当前项目中获得了此代码
public Expression<Func<MyObject, object>> CreateSelectExp(a, b)
{
return x => new
{
x.Id,
x.Status,
x.DateCreated,
x.Theme,
Message = MergeMessage(db, x.Id)
};
}
private IQueryable<string> MergeMessage(ConnectTo db, Guid id)
{
return db.MsgHistory
.Where(s => s.FK_MsgHistory_MsgID.Id == id)
.Where(s => !string.IsNullOrEmpty(s.Message))
.Select(s => String.Join(Environment.NewLine, s.Message));
}
我得到的是 IQueryable ,它最终(在客户端)看起来像这样["Text One","Text Two", "Text Three"]
,但我需要的是一个这样的字符串Text One, Text Two, Text Three
。由于我在 中有一个 SQL 表达式字符串CreateSelectExp()
,因此我无法在其中获取任何 List() 或 Array() 。我读过关于聚合的文章,但我所有的尝试都没有结果。所以问题是如何用 linq 表达式获得一个合并的字符串?
解决方案
string.Join(
"\n",
db.MsgHistory
.Where(s => s.FK_MsgHistory_MsgID.Id == id)
.Where(s => !string.IsNullOrEmpty(s.Message))
.Select(s => s.Message))
应该做的伎俩
编辑:如果您想要一行中的所有内容,您可以使用不同的分隔符,例如“,”。
推荐阅读
- python - TensorFlow 中的逐行相关
- python - Django 过滤器。什么更有效 - .filter(date__range) 或 .all() 并通过 Python 过滤
- python - 使用谷歌云Text2Speech时如何选择复音字(中文)的读音?
- asp.net-core - MassTransit ISendEndpoint.Send method doesn't throw exception when RabbitMQ is unreachable
- c# - 如何使用 .NET 5 获取跨平台系统型号名称?
- c# - 在 Asp.net 核心中本地化 DataAnnotations
- flutter - 如何在颤动中获得两次之间的时间?
- docker - 容器不再可以从外部访问(尽管 localhost 有效)
- android - Android 房间数据库迁移
- deep-learning - pyTorch中Dataset和TensorDataset的区别