Используя код для преобразования IList<T>
в FSharpList<T>
, затем запишите значения списка в XML.
public static class Interop
{
public static FSharpList<T> ToFSharpList<T>(this IList<T> input)
{
return CreateFSharpList(input, 0);
}
private static FSharpList<T> CreateFSharpList<T>(IList<T> input, int index)
{
if(index >= input.Count)
{
return FSharpList<T>.Empty;
}
else
{
return FSharpList<T>.Cons(input[index], CreateFSharpList(input, index + 1));
}
}
}
Я использую приведенный выше код для создания собственного списка
var fsharp_distinct = distinctWords.ToFSharpList();
var distinct_without_stopwords = Module2.stopword(fsharp_distinct);
foreach (string wd in distinct_without_stopwords)
colwordfreq.Root.Add(new XElement(wd));
Infact, XML написан тоже, но перед выходом из цикла он дает System.NullReferenceException
.Но когда функция F # вернула Tuple<string, int>
с использованием того же кода, у меня не возникло проблем с записью значений Tuple в XML.
РЕДАКТИРОВАТЬ: Я был не прав в приведенном выше вопросе.Исключение с нулевой точкой фактически пришло из этого кода:
foreach (Tuple<string, int> pair in list2)
colwordfreq.Root.Element(pair.Item1).Add(new XElement("freq", pair.Item2));
Но когда я добавил условие
if (colwordfreq.Root.Element(pair.Item1) != null)
Это исключение не дает.