Linq - Как получить результат для запроса в Linq и добавить его в массив - PullRequest
1 голос
/ 24 февраля 2011

Я использую c #, linq и EF4, я хотел бы попросить вашей помощи.

Мой вопрос: У меня есть запрос linq, но мне нужно, чтобы результат для этого запроса был вставлен в строку массива. Добавленная стоимость должна быть Title и ContentId (ContentId из EF - INT, но мне нужно это как строка)

Пожалуйста, дайте мне знать, большое спасибо заранее! PS: Пожалуйста, отправьте полный код: -)

       public static string[] GetCompletionList(string prefixText, string count)
{
    using (CmsConnectionStringEntityDataModel context = new CmsConnectionStringEntityDataModel())
    {
    var queryTitle = (from content in context.CmsContents
                      select new
                      {
                          Title = content.Title, // String
                          ContentId = content.ContentId.ToString() // Int
                      }).ToArray();
    return queryTitle;


    }

Ответы [ 3 ]

5 голосов
/ 24 февраля 2011

Если вы хотите, чтобы ContentId был строкой, сделайте следующее:

var queryTitle = (from content in context.CmsContents
                 select new
                 {
                     Title = content.Title, // String
                     ContentId = content.ContentId.ToString() // Int
                 }).ToArray();

queryTitle будет созданным массивом анонимного типа, который имеет два свойства:

  1. Название
  2. ContentID

Оба типа строки.

Если вы не хотите иметь массив анонимного типа, но массив строк, используйте этот код:

var queryTitles = (from content in context.CmsContents
                 select "Title: " + content.Title + ", ContentId: " +  content.ContentId.ToString()).ToArray();
0 голосов
/ 24 февраля 2011
var strings = from content in context.CmsContents
              select string.Format ("{0} {1}",
                  content.ContentId,
                  content.Title
              );

Это должно вам помочь.
Обратите внимание, что распространенным заблуждением является то, что вам нужен массив для работы с результатами запроса - на самом деле это не так, результат уже IEnumerable.Если вы уверены, что вам нужен массив, просто заключите запрос в скобки и вызовите метод расширения ToArray для результата.

0 голосов
/ 24 февраля 2011

если вы хотите, чтобы contentID и Title были в одном большом массиве строк (из вашего вопроса это звучит так, но не очень понятно), вы можете попробовать это

var resultArray = titlesAsArray
            .Select(a => new[]
                             {
                                 a.ContentId.ToString(), a.Title
                             })
            .SelectMany(x => x).ToArray();

илиизмените ваш оригинальный запрос

var resultArray = context.CmsContents.Select(content => new[]
                                 {
                                     content.ContentId.ToString(), content.Title
                                 }).SelectMany(content => content).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...