У меня есть строка URL, входящая в API, например c1:1=25
.
*http://mysite/api/controllername?serial=123&c1:=25*
Я хочу разделить его на имя канала (c1), номер чтения канала (1) после двоеточия и значение (25).
Есть также случаи, когда двоеточие отсутствует, так как это фиксированное значение, такое как серийный номер (serial = 123).
Я создал класс:
public class UriDataModel
{
public string ChannelName { get; set; }
public string ChannelNumber { get; set; }
public string ChannelValue { get; set; }
}
Я пытаюсь использовать IEnumerable с некоторым LINQ и не захожу слишком далеко.
var querystring = HttpContext.Current.Request.Url.Query;
querystring = querystring.Substring(1);
var urldata = new UrlDataList
{
UrlData = querystring.Split('&').ToList()
};
IEnumerable<UriDataModel> uriData =
from x in urldata.UrlData
let channelname = x.Split(':')
from y in urldata.UrlData
let channelreading = y.Split(':', '=')
from z in urldata.UrlData
let channelvalue = z.Split('=')
select new UriDataModel()
{
ChannelName = channelname[0],
ChannelNumber = channelreading[1],
ChannelValue = channelvalue[2]
};
List<UriDataModel> udm = uriData.ToList();
Мне кажется, что я здесь слишком усложняю.
Таким образом, я хочу разбить строку на три части, а там, где нет двоеточия, разбить ее на две части.
Любые указатели будут великолепны. ТИА