有人知道如何做到这一点吗?
LINQ不允许我使用Aggregate()和string.Join(),因为它无法将其转换为SQL。
在DBFunctions类中也找不到相关的函数。
正确的方法是什么?
答案 0 :(得分:0)
不确定您要问的什么...这可以解决您的问题吗?
[('jhgfds',), ('uytrds',), ('sadfghjk',), ('jhytre',), ('j',), ('h',), ('q',), ('BBC',), ('BBC',), ('qwed',)]
答案 1 :(得分:0)
不幸的是,诸如String.Join()之类的.NET函数无法直接转换为SQL。因此,您无法按自己的意愿使用它们。您在正确的地方提到了DBFunctions
类。此类包含在linq to SQL查询中可以使用的 函数。
实现所需目标的正确方法是编写一个linq查询,该查询包含要加入的项目的集合并首先实现它们。之后,您可以对数据执行任何.NET功能。
var notes = await Entities.Select(x => new
{
x.Id, // int
Notes = x.Notes.Select(a => a.Comment) // IEnumerable<string>
})
.Where(x => x.Notes.Contains("your filter string")) // filtering
.Skip(1)
.Take(10)
.ToArrayAsync(); // and finally you materialize the data
// Now that the data has been materialized, you can perform .NET functions with String.Join
var joinedNotes = notes.Select(x => new
{
x.Id,
ConcatenatedNotes = String.Join(", ", x.Notes)
});