Метод для подсчета случаев в списке

Мне пришлось добавить следующие строки в gradle, чтобы устранить ошибку, это зависит от версии, которую вы используете, такой же, как appcompat

compile 'com.android.support:appcompat-v7:26+'

compile 'com.android.support:mediarouter-v7:26+'
45
задан Jim 6 November 2016 в 22:08
поделиться

4 ответа

Я использую asp.net mvc как мой html-сайт (механизм просмотра по умолчанию), так и конечная точка службы. Конечная точка службы используется моими клиентами WPF и Silverlight путем вставки «content-type = text / xml» в заголовок запроса WebClient (см. Сообщение ScottGu о потреблении службы в SL, которая вдохновила этот подход) . Я нашел где-то в сети код, который переопределяет событие OnActionExecuted, например:

public class JsonOrXml : ActionFilterAttribute
{
    private static UTF8Encoding UTF8 = new UTF8Encoding(false);

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // setup the request, view and data
        HttpRequestBase request = filterContext.RequestContext.HttpContext.Request;
        ViewResult view = (ViewResult)(filterContext.Result);
        var data = view.ViewData.Model;

        String contentType = request.ContentType ?? string.Empty;

        // JSON
        if (contentType.Contains("application/json") || (string)view.ViewData["FORMAT"] == "json")
        {
            filterContext.Result = new JsonResult
            {
                Data = data
            };
        }

        // POX
        else if (contentType.Contains("text/xml") || (string)view.ViewData["FORMAT"] == "xml")
        {
            // MemoryStream to encapsulate as UTF-8 (default UTF-16)
            // http://stackoverflow.com/questions/427725/
            //
            // MemoryStream also used for atomicity but not here
            // http://stackoverflow.com/questions/486843/
            //using (MemoryStream stream = new MemoryStream(500))
            //{
            //    using (var xmlWriter =
            //        XmlTextWriter.Create(stream,
            //            new XmlWriterSettings()
            //            {
            //                OmitXmlDeclaration = false,
            //                Encoding = UTF8,
            //                Indent = true
            //            }))
            //    {
            //        new XmlSerializer(data.GetType()).Serialize(xmlWriter, data);
            //    }

            //    filterContext.Result = new ContentResult
            //    {
            //        ContentType = "text/xml",
            //        Content = UTF8.GetString(stream.ToArray()),
            //        ContentEncoding = UTF8
            //    };
            //}

            XmlDeclaration xmlDecl = new XmlDocument().CreateXmlDeclaration("1.0", "UTF-8", "yes");

            filterContext.Result = new ContentResult
            {                    
                ContentType = "text/xml",
                Content = xmlDecl.OuterXml + data.ToString(),
                ContentEncoding = UTF8
            };
        }
    }
}

Итак, закомментированный фрагмент - это код, который я нашел - см. Ссылки на stackoverflow, чтобы узнать, где я его получил :)

Я переопределил ToString () для всех моих бизнес-объектов, чтобы вернуть строку, представляющую, как бизнес-объект хотел бы представлять себя как xml.

var l1 = new List<int>() { 1,2,3,4,5,2,2,2,4,4,4,1 };

var g = l1.GroupBy( i => i );

foreach( var grp in g )
{
  Console.WriteLine( "{0} {1}", grp.Key, grp.Count() );
}

Редактировать за комментарий: Я постараюсь сделать это справедливо. :)

В моем примере это Func , потому что мой список - это целые числа. Итак, я говорю GroupBy, как сгруппировать свои элементы. Func принимает int и возвращает ключ для моей группировки. В этом случае я получу IGrouping (группировка целых чисел с ключом int). Если бы я изменил его на ( i => i.ToString () ), например, я бы добавил свою группировку строкой. Вы можете представить менее тривиальный пример, чем ввод с помощью «1», «2», «3» ... может быть, я создаю функцию, которая возвращает «один», «два», «три» в качестве моих ключей ...

private string SampleMethod( int i )
{
  // magically return "One" if i == 1, "Two" if i == 2, etc.
}

Итак, это Func, который принимает int и возвращает строку, точно так же, как ...

i =>  // magically return "One" if i == 1, "Two" if i == 2, etc. 

Но,

79
ответ дан 26 November 2019 в 21:04
поделиться

Вы можете сделать что-то вроде этого для подсчета из списка вещей.

IList<String> names = new List<string>() { "ToString", "Format" };
IEnumerable<String> methodNames = typeof(String).GetMethods().Select(x => x.Name);

int count = methodNames.Where(x => names.Contains(x)).Count();

Для подсчета одного элемента

string occur = "Test1";
IList<String> words = new List<string>() {"Test1","Test2","Test3","Test1"};

int count = words.Where(x => x.Equals(occur)).Count();
16
ответ дан 26 November 2019 в 21:04
поделиться

Ваш внешний цикл перебирает все слова в списке. В этом нет необходимости и возникнут проблемы. Снимите его, и он должен работать правильно.

-3
ответ дан 26 November 2019 в 21:04
поделиться

Я использую asp.net mvc как свой html-сайт (механизм просмотра по умолчанию), так и конечную точку службы. Конечная точка службы используется моими клиентами WPF и Silverlight путем вставки «content-type = text / xml» в заголовок запроса WebClient (см. Сообщение ScottGu о потреблении службы в SL, которая вдохновила этот подход) . Я нашел где-то в сети код, который переопределяет событие OnActionExecuted, например:

public class JsonOrXml : ActionFilterAttribute
{
    private static UTF8Encoding UTF8 = new UTF8Encoding(false);

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // setup the request, view and data
        HttpRequestBase request = filterContext.RequestContext.HttpContext.Request;
        ViewResult view = (ViewResult)(filterContext.Result);
        var data = view.ViewData.Model;

        String contentType = request.ContentType ?? string.Empty;

        // JSON
        if (contentType.Contains("application/json") || (string)view.ViewData["FORMAT"] == "json")
        {
            filterContext.Result = new JsonResult
            {
                Data = data
            };
        }

        // POX
        else if (contentType.Contains("text/xml") || (string)view.ViewData["FORMAT"] == "xml")
        {
            // MemoryStream to encapsulate as UTF-8 (default UTF-16)
            // http://stackoverflow.com/questions/427725/
            //
            // MemoryStream also used for atomicity but not here
            // http://stackoverflow.com/questions/486843/
            //using (MemoryStream stream = new MemoryStream(500))
            //{
            //    using (var xmlWriter =
            //        XmlTextWriter.Create(stream,
            //            new XmlWriterSettings()
            //            {
            //                OmitXmlDeclaration = false,
            //                Encoding = UTF8,
            //                Indent = true
            //            }))
            //    {
            //        new XmlSerializer(data.GetType()).Serialize(xmlWriter, data);
            //    }

            //    filterContext.Result = new ContentResult
            //    {
            //        ContentType = "text/xml",
            //        Content = UTF8.GetString(stream.ToArray()),
            //        ContentEncoding = UTF8
            //    };
            //}

            XmlDeclaration xmlDecl = new XmlDocument().CreateXmlDeclaration("1.0", "UTF-8", "yes");

            filterContext.Result = new ContentResult
            {                    
                ContentType = "text/xml",
                Content = xmlDecl.OuterXml + data.ToString(),
                ContentEncoding = UTF8
            };
        }
    }
}

Итак, закомментированный фрагмент - это код, который я нашел - см. Ссылки на stackoverflow, где я его получил: )

Я переопределил метод ToString () для всех моих бизнес-объектов, чтобы вернуть строку, представляющую, как бизнес-объект хотел бы представлять себя как xml. WCF выполняет это с помощью атрибутов, но мне нужно было более чистое решение, которое не полагалось бы на отражение, И я не хотел иметь и проект веб-сайта, и проект WCF - проблема с двумя проектами в том, что было трудно сохранить их оба. синхронно в отношении функциональности - я бы получал запросы вроде «почему служба не позволяет мне фильтровать мои результаты, как это делает веб-сайт?»

Меня очень интересуют отзывы других об этом подходе :)

Вот пример бизнес-объекта:

14
ответ дан 26 November 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: