C#, преобразовывающие список <интервал> для списка, <удваиваются>

Для этого вам не нужен jQuery. В вашей форме добавьте:

onsubmit="return buttonSubmit(this)

или в JavaScript:

myform.setAttribute("onsubmit", "return buttonSubmit(this)");

В вашей функции buttonSubmit (или, как вы ее называете), вы можете отправить форму с помощью AJAX , buttonSubmit вызывается только в том случае, если ваша форма проверена в HTML5.

Если это кому-то помогает, вот моя функция buttonSubmit:

function buttonSubmit(e)
{
    var ajax;
    var formData = new FormData();
    for (i = 0; i < e.elements.length; i++)
    {
        if (e.elements[i].type == "submit")
        {
            if (submitvalue == e.elements[i].value)
            {
                submit = e.elements[i];
                submit.disabled = true;
            }
        }
        else if (e.elements[i].type == "radio")
        {
            if (e.elements[i].checked)
                formData.append(e.elements[i].name, e.elements[i].value);
        }
        else
            formData.append(e.elements[i].name, e.elements[i].value);
    }
    formData.append("javascript", "javascript");
    var action = e.action;
    status = action.split('/').reverse()[0] + "-status";
    ajax = new XMLHttpRequest();
    ajax.addEventListener("load", manageLoad, false);
    ajax.addEventListener("error", manageError, false);
    ajax.open("POST", action);
    ajax.send(formData);
    return false;
}

Некоторые из моих форм содержат несколько кнопок отправки, поэтому эта строка if (submitvalue == e.elements[i].value). Я установил значение submitvalue с помощью события click.

25
задан Eric Lippert 18 January 2010 в 05:22
поделиться

5 ответов

Вы можете использовать методы Linq:

List<double> doubles = integers.Select<int, double>(i => i).ToList();

или:

List<double> doubles = integers.Select(i => (double)i).ToList();

Кроме того, класс списка имеет метод FOREACH:

List<double> doubles = new List<double>(integers.Count);
integers.ForEach(i => doubles.Add(i));
32
ответ дан 28 November 2019 в 17:45
поделиться

Вы можете использовать Select, как предлагают другие, но вы также можете использовать ConvertAll:

List<double> doubleList = intList.ConvertAll(x => (double)x);

Это имеет два преимущества:

  • Для этого не требуется LINQ, поэтому, если вы используете .NET 2.0 и не хотите использовать LINQBridge , вы все равно можете его использовать.
  • Это более эффективно: метод ToList не знает размер результата Select, поэтому ему может потребоваться перераспределить буферы по мере продвижения. ConvertAll знает размер источника и назначения, поэтому он может сделать все это за один раз. Это также может быть сделано без абстракции итераторов.

Недостатки:

  • Работает только с List<T> и массивами. Если вы получите равнину IEnumerable<T>, вам придется использовать Select и ToList.
  • Если вы интенсивно используете LINQ в своем проекте, может быть более логичным продолжать использовать его и здесь.
51
ответ дан Jon Skeet 28 November 2019 в 17:45
поделиться

Вы можете использовать метод ConvertAll внутри .Net Framework 2.0, вот пример

        List<int> lstInt = new List<int>(new int[] { 1, 2, 3 });
        List<double> lstDouble = lstInt.ConvertAll<double>(delegate(int p)
        {
            return (double)p;
        });
2
ответ дан fyasar 28 November 2019 в 17:45
поделиться

Вы можете использовать Select или ConvertAll. Имейте в виду, что ConvertAll также доступен в .Net 2.0

0
ответ дан Giorgi 28 November 2019 в 17:45
поделиться

Вы можете сделать это, используя метод расширения Select:

List<double> doubleList = intList.Select(x => (double)x).ToList();
8
ответ дан 28 November 2019 в 17:45
поделиться
Другие вопросы по тегам:

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