Строка присоединения в лямбда-запросе LINQ - PullRequest
0 голосов
/ 22 ноября 2018

Кто-нибудь знает, как это можно сделать?

LINQ не позволит мне использовать Aggregate () и string.Join (), поскольку он не может перевести его в SQL.

Iтакже не удалось найти соответствующую функцию в классе DBFunctions.

Как правильно это сделать?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

К сожалению, функции .NET, такие как String.Join (), не могут быть напрямую переведены в 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)
});
0 голосов
/ 22 ноября 2018

Не совсем уверен, что вы спрашиваете ... Это решит вашу проблему?

var strings = new List<List<string>>() {
    new List<string> {"abc","cde"},
    new List<string> {"123","456"}
};

var joinedString = strings.Select(s => string.Join(",", s));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...