LINQ Lambda查询中的连接字符串

时间:2018-11-22 15:01:42

标签: linq lambda

有人知道如何做到这一点吗?

LINQ不允许我使用Aggregate()和string.Join(),因为它无法将其转换为SQL。

在DBFunctions类中也找不到相关的函数。

正确的方法是什么?

2 个答案:

答案 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)
});