Итак, у меня есть несколько записей с несколькими типами номеров и уровнями комнат. Я знаю, что этот код работает до сих пор, но я надеялся, что кто-то может показать мне более простой способ?Как подсчитать разные значения в нескольких элементах
это XML я получаю
<RETS ReplyCode="0" ReplyText="Operation Success.">
<DELIMITER value = "09"/>
<COLUMNS> InputEntryOrder listing_MUI matrix_unique_id RoomLevel RoomType </COLUMNS>
<DATA> 1 74743676 74743677 U A </DATA>
<DATA> 2 74743676 74743678 M N </DATA>
<DATA> 3 74743676 74743679 L A </DATA>
<DATA> 4 74743676 74743680 L N </DATA>
<DATA> 5 74743676 74743681 U A </DATA>
<DATA> 6 74743676 74743682 M BF </DATA>
<DATA> 7 74743676 74743683 M E </DATA>
<DATA> 8 74743676 74743684 M J </DATA>
<DATA> 9 74743676 74743685 U A </DATA>
<DATA> 10 74743676 74743686 M H </DATA>
<DATA> 11 74743676 74743687 M K </DATA>
<DATA> 12 74743676 74743688 M N </DATA>
<DATA> 13 74743676 74743689 U N </DATA>
<DATA> 14 74743676 74743690 M N </DATA>
</RETS>
И это C# код я работаю до сих пор, но не устраивает :(
XmlDocument doc = new XmlDocument();
doc.LoadXml("<root>" + ResponseText + "</root>");
XmlNode mlsNode = doc.SelectSingleNode("//RETS");
//bool MasterBedroom = false;
int UtilityRoomCountM = 0;
int UtilityRoomCountU = 0;
int UtilityRoomCountL = 0;
int UtilityRoomCountG = 0;
int DwellingUnitU = 0;
int DwellingUnitM = 0;
int DwellingUnitL = 0;
foreach (XmlNode node in mlsNode.ChildNodes)
{
if (node.Name == "DATA")
{
string[] splitData = node.InnerText.Split("\t".ToCharArray());
string ResponseD = node.InnerText;
RoomName = splitData[10];
RoomValue = splitData[8];
switch (RoomName)
{
case "M":
if (RoomName == "N")
UtilityRoomCountU++;
else
DwellingUnitU++;
break;
case "L":
if (RoomName == "N")
UtilityRoomCountM++;
else
DwellingUnitM++;
break;
case "U":
if (RoomName == "N")
UtilityRoomCountL++;
else
DwellingUnitL++;
break;
}
}
}
// outside the loop
// Do the Utiltiy Room Here so you can count
// these are other fucntion which just set's the value back to my forms
SetField("UtilityRoomUpper", UtilityRoomCountU.ToString());
SetField("UtilityRoomMain", UtilityRoomCountM.ToString());
SetField("UtilityRoomLower", UtilityRoomCountL.ToString());
SetField("UtilityRoomGarage", UtilityRoomCountG.ToString());
SetField("DwellingUnitUpper", DwellingUnitU.ToString());
SetField("DwellingUnitMain", DwellingUnitM.ToString());
SetField("DwellingUnitLower", DwellingUnitL.ToString());
я была надежда, вместо того, чтобы объявить так много счетчиков, где я могу найти все типы номеров N и сколько M (основной), L (нижний), U (верхний) и то же относится к другим типам комнат, например A!
Я вижу 'переключатель (RoomName)', то 'если (RoomName' - это правильно? –
Да, идея была в том, что RoomName = n, а затем count else if roomname = A, а затем count else, если Roomname = BF, а затем подсчет, и так далее, я делаю разные подсчеты для каждой комнаты. Название и как много записей найдено на каждом уровне, помогает ли это –