LINQ возвращает имя класса, а не значение данных - PullRequest
0 голосов
/ 15 января 2010

У меня есть коллекция объектов TwitterCollection, хранящихся в списке.Я заполняю объект TwitterCollection (tc) через цикл foreach, а затем обращаюсь к нему через LINQ.

Мой класс с его свойствами выглядит так:

//simple field definition class
public class TwitterCollection
{
    public string origURL { get; set; }
    public string txtDesc { get; set; }
    public string imgURL { get; set; }
    public string userName { get; set; }
    public string createdAt { get; set; }
    public string realURL { get; set; }
    public string googleTitle { get; set; }
    public string googleDesc { get; set; }
}

Затем я перехожу кзаполнить его циклом, состоящим из нескольких совпадений RegEx в группе:

var list = new List<TwitterCollection>();

    foreach (Match match in matches)
    {

        GroupCollection groups = match.Groups;
        var tc = new TwitterCollection
        {
            origURL = groups[1].Value.ToString(),
            txtDesc = res.text,
            imgURL = res.profile_image_url,
            userName = res.from_user_id,
            createdAt = res.created_at,
        };
        list.Add(tc);
    }

Наконец, я просматриваю коллекцию с помощью LINQ и извлекаю только определенные элементы для отображения:

    var counts = from URL in list
                 group URL by URL into g
                 orderby g.Count()
                 select new { myLink = g.Key, Count = g.Count() };

Результатом всего этого является длинный список слова «TwitterCollection» в count.myLink и отсутствие количества URL-адресов ...

Раньше все это работало до того, как я перешел к универсальному списку.Теперь я переехал для удобства, это не сработает.

Я бы очень признателен, если бы кто-то избавил меня от моих страданий здесь!Заранее спасибо.

1 Ответ

2 голосов
/ 15 января 2010

Ваш список имеет тип List<TwitterCollection>, поэтому переменная URL имеет тип TwitterCollection. Так что TwitterCollection - это то, что выбирается в g.Key (и, следовательно, myLink), и это отображается как строка "TwitterCollection".

Измените ваш запрос на:

var counts = from tc in list
             group tc by tc.origURL into g  // note by tc.origURL to extract the origURL property
             ...

(из вашего кода неясно, по какому URL вы хотите сгруппироваться, так как коллекция TwitterCollection содержит несколько URL. Я использовал origURL в качестве примера.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...