[英]Parse string using C# LINQ
在使用C#LINQ解析字符串時需要幫助我有這樣的字符串
11=205129022,453=8,448=CompanyID,447=D,452=63,448=userid,447=D,452=11,448=CompanyName,447=D,452=13,448=W,447=D,452=54,77=O,555=2
我想在448=
上分割此字符串,然后使用數組開始獲取“ 448開頭”行,得到該行的最后一個字符串452=
我正在嘗試使用LINQ來獲取最終輸出的邏輯,但它不起作用。
var parties = rptstr.Split(new string[] { "453=" }, StringSplitOptions.None).Select(p => p.Split(new string[] {"448="},StringSplitOptions.None);
var str448 = (from lnprty in parties
where lnprty.ToString().StartsWith("448=")
//let tmp = line1.ToString()
select new PartyRoleModel()
{
companyid == lnprty.Where(s => s.EndsWith("452=63,")).Select(s => s.Substring(s.IndexOf('=') + 1)).FirstOrDefault(),
userid == lnprty.Where(s => s.EndsWith("452=11,")).Select(s => s.Substring(s.IndexOf('=') + 1)).FirstOrDefault()
companyname == lnprty.Where(s => s.EndsWith("452=13,")).Select(s => s.Substring(s.IndexOf('=') + 1)).FirstOrDefault()
PhyFlag == lnprty.Where(s => s.EndsWith("452=54,")).Select(s => s.Substring(s.IndexOf('=') + 1)).FirstOrDefault()
})
.ToList();
我可以將行分割為448
但是448
行不帶448=
因為它已經被分割了,所以我也需要在行中分割字符串,以便識別該行。 請 記住最后一行在結尾處帶有其他字符串(448=W,447=D,452=54,77=O,555=2)
。 我應該得到最終輸出,例如452 = 63 get companyid(in 447 =),452 = 11 get userid,452 = 13 get companyname謝謝。
嘗試以下操作:
const string FILENAME = @"c:\temp\test.txt";
static void Main(string[] args)
{
Dictionary<int, Dictionary<string, int>> dict = new Dictionary<int, Dictionary<string, int>>();
StreamReader reader = new StreamReader(FILENAME);
string input = "";
while ((input = reader.ReadLine()) != null)
{
//string input = "11=205129022,453=8,448=CompanyID,447=D,452=63,448=userid,447=D,452=11,448=CompanyName,447=D,452=13,448=W,447=D,452=54,77=O,555=2";
List<string> strArray = input.Split(new char[] { ',' }).ToList();
//or dictionary
Dictionary<string, int> rowDict = strArray.Select(x => x.Split(new char[] { '=' })).GroupBy(x => x.Last(), y => int.Parse(y.First())).ToDictionary(x => x.Key, y => y.FirstOrDefault());
int id = rowDict["CompanyID"];
dict.Add(id, rowDict);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.