Мне нужно с логикой оператора if внутри цикла foreach, у меня проблема в том, что при чтении операторов if внутри цикла, когда мой цикл возвращает результат, я получаю неправильные результаты.
цикл foreach читает поступающие данные из списка, а затем принимает решение в цикле foreach на основе операторов if
метод возврата списка, поэтому здесь, в моем коде, например, если данные, поступающие для 5 записей и для учреждения, содержат 038, это 4 записи и 1 запись для учреждения 088, когда я получаю возврат этих данных, я получаю 1 038, затем 088, затем снова 038, затем 088 и т. Д., И не должно быть так, чтобы он возвращал 4 038 и 1 088, поэтому возврат из списка лотов вернет строку, например, 111920-325, но это не проблема, проблема, с которой я сталкиваюсь, логика операторов if в цикле
public List<string> ParseLot()
{
var lotList = new List<string>();
var establishmentList = GetEstablishmentCode();
foreach (var lot in GetBarcodeList())
{
if (establishmentList.Contains("038"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.LoganSport038Property);
}
if (establishmentList.Contains("072"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.LouisaCounty072Property);
}
if (establishmentList.Contains("086"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.Madison086Property);
}
if (establishmentList.Contains("089"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.Perry089Property);
}
if (establishmentList.Contains("069"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.StormLake069Property);
}
if (establishmentList.Contains("088"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.Waterloo088Property);
}
if (establishmentList.Contains("265"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.GoodLetsVille265Property);
}
if (establishmentList.Contains("087"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.CouncilBluffs087Property);
}
if (establishmentList.Contains("064"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.Sherman064Property);
}
}
return lotList;
}
вот класс лота
public class LotEstablishment
{
// private variable field (access modifiers)
private const string LoganSport038 = "-244I";
private const string LouisaCounty072 = "-244L";
private const string Madison086 = "-244M";
private const string Perry089 = "-244P";
private const string StormLake069 = "-244";
private const string Waterloo088 = "-244W";
private const string GoodLetsVille265 = "-244G";
private const string CouncilBluffs087 = "-244C";
private const string Sherman064 = "-244S";
// properties
public string LoganSport038Property => LoganSport038;
public string LouisaCounty072Property => LouisaCounty072;
public string Madison086Property => Madison086;
public string Perry089Property => Perry089;
public string StormLake069Property => StormLake069;
public string Waterloo088Property => Waterloo088;
public string GoodLetsVille265Property => GoodLetsVille265;
public string CouncilBluffs087Property => CouncilBluffs087;
public string Sherman064Property => Sherman064;
}
метод определения позиции лота
public List<string> GetEstablishmentCode()
{
var establishmentList = new List<string>();
foreach (var establishmentCode in GetBarcodeList())
{
establishmentList.Add(establishmentCode.Substring(36, 3));
}
return establishmentList;
}
Итак, еще раз, конечный результат для возврата lostList должен основываться на операторах if внутри цикла foreach.
Я не смог найти твердого решения по другим вопросам в stackoverflow или google.