Я сделал запрос FetchXML, который возвращает данные из моей сетки CRM2013. Данные передаются в список, который затем преобразуется в файл CSV с помощью следующего кода;
EntityCollection result = service.RetrieveMultiple(new FetchExpression(fetchxml)); foreach (var c in result.Entities)
{
if (result != null && result.Entities.Count > 0)
{
List<string> _product = new List<string>();
foreach (Entity _entity in result.Entities)
{
_product.Add(((EntityReference)c.Attributes["productid"]).Name.ToString());
_product.Add(_entity.Attributes["quantity"].ToString());
}
CSVFile = string.Join(",", _product.ToArray());
string AddressPath = "FM-OR" + "_";
string AddressSavePath = @"\\fm\CRMdata\maesteg\" + AddressPath + ".csv";
System.IO.File.WriteAllText(AddressSavePath, CSVFile.ToString());
Результат будет следующим
ProductExample1, 1.0, ProductExample2, 4.0, ProductExample3, 2.0
Я хочу, чтобы результат был
ProductExample1, 1.0
ProductExample2, 4.0
ProductExample3, 2.0
Любые предложения о том, как я этого достигну?
Благодарность
Обновить
Мне не показалось, что я объяснил это правильно. Я хочу, чтобы выходные данные были отдельными строками, чтобы я мог выводить разные CSV-файлы для каждого продукта + количество в списке. Спасибо.
Обновить
Реализован код с новыми предложениями, ошибка описана в комментарии ниже
EntityCollection result = service.RetrieveMultiple(new FetchExpression(fetchxml)); foreach (var c in result.Entities)
{
if (result != null && result.Entities.Count > 0)
{
List<string> _product = new List<string>();
foreach (Entity _entity in result.Entities)
{
string productid = (((EntityReference)_entity.Attributes["productid"]).Name.ToString());
string quantity = _entity.Attributes["quantity"].ToString();
CSVFile = productid + "," + quantity;
int n =1;
string AddressPath = "FM-OR" + "_" +actualID + "_" + n;
string AddressSavePath = @"\\fm\CRMdata\maesteg\" + AddressPath + ".csv";
System.IO.File.WriteAllText(AddressSavePath, CSVFile.ToString());
n++;
}
}
}
Благодарность
2 ответа
Насколько я понимаю ваш вопрос, это может вам помочь. CSVFILE
теперь представляет собой строку, содержащую продукт и количество, разделенные знаком "," которую вы можете записать в свой файл.
EntityCollection result = service.RetrieveMultiple(new FetchExpression(fetchxml));
if (result != null && result.Entities.Count > 0)
{
List<string> _products = new List<string>();
foreach (Entity _entity in result.Entities)
{
string productid = (EntityReference)c.Attributes["productid"]).Name.ToString();
string quantity = _entity.Attributes["quantity"].ToString();
CSVFILE = productid + "," + quantity;
//Write CSVFILE
//...
}
}
А как насчет такого метода расширения?
public static IEnumerable<string> JoinEverySecond(this IList<string> list)
{
if (list == null)
{
throw new ArgumentNullException("list");
}
for (var i = 0; i < list.Count; i += 2)
{
if (i + 1 >= list.Count)
{
yield return list[i];
}
yield return string.Join(",", list[i], list[i + 1]);
}
}
Warn: не тестировал, но я просто хотел представить идею.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.