2016-08-17 3 views
-2

質問1# 以下のコードを実行すると、フォーマットエラーが発生します。 System.doubleはSystem.stringに変換できません。フォーマットエラーを取得すると、system.doubleをsystem.stringに変換できません。

var PiePriorityCount = dt.AsEnumerable() 
         .GroupBy(item => item.Field<string>("Priority")) 
         .Select(item => new { Priority = item.Key, TicketCount = item.Count() }); 


     dtPriorityCount.Columns.Add("Priority", typeof(string)); 
     dtPriorityCount.Columns.Add("Count", typeof(int)); 
     lblStatus.Visible = true; 
     foreach (var itm in PiePriorityCount) 
     { 
      //lblStatus.Text = "Z" + "->" + itm.TicketCount; 
      DataRow dr = dtPriorityCount.NewRow(); 
      dr["Priority"] = "P" + " " +itm.Priority; 
      dr["Count"] = itm.TicketCount; 
      dtPriorityCount.Rows.Add(dr); 
     } 

上記のコードを実行すると、フォーマットエラーが発生します。 System.doubleはSystem.stringに変換できません。

質問2#は、スティング、ログに回答 を得た最初の行のステータスを含み、第二の行にグループを所有しており、第三の上グループに割り当て。だから私は、サブ文字列を行の終わりまでの状態にしたい。すなわち、割り当てられた(1)

そして、順番にシャッフルすることができます。最初のものがステータスである必要はなく、グループまたは割り当てられたグループを所有することができます。

string LOG = "Status: Assigned (1) \n Owned Group: Jitesh - poiuyt \n Assigned Group: Jitesh - QWERTY"; 

string tb = "Status: "; 
string tb1 = "Assigned Group: "; 

int lenght = tb.Length; 
int a = LOG.IndexOf(tb) + lenght; 

int lenght1 = tb1.Length; 
int a1 = LOG.IndexOf(tb1) + lenght1; 

var status = LOG.Substring(a,'\n'); 
var status1 = LOG.Substring(a1, '\n'); 

予想される出力:
状態=割り当てられた(1)
STATUS1 = Jitesh - QWERTY

電流出力:割り当て
状態=(
STATUS1 = Jitesh - Q

この私は何を期待しているのか、これは私が得ているものです。

+0

がより意味のあるトピックを選んで考えてみてください。 – C4u

+0

Didntはあなたをつかまえましたか? –

+0

これはちょうど混乱しています。最後の文を得る。出力がどのようにコメントのように見えるかを見せてください。あなたのコメントと出力に属するはずのパーツとを区別することはできません。 – C4u

答えて

0

あなたは二回Split使用することができます::Status: Assigned (1)Assigned Group: Jitesh - QWERTY、その後、

  • を取得し、値をトリミングする\n

    • を。

    C# demo

  • は:

    var LOG = "Status: Assigned (1) \n Owned Group: Jitesh - poiuyt \n Assigned Group: Jitesh - QWERTY"; 
    var res = LOG.Split('\n') 
        .Where(p => p.Trim().StartsWith("Status:") || p.Trim().StartsWith("Assigned Group:")) 
        .Select(n => n.Split(':').LastOrDefault().Trim()) 
        .ToList(); 
    
    var status = res[0]; 
    var status1 = res[1]; 
    

    最初は、第1はstatus1で、statusあり、そこに2つの値を持つことになります。

    その順序はランダムであることができれば2つの変数を取得する別の方法は:

    var status = LOG.Split('\n') 
        .Where(p => p.Trim().StartsWith("Status:")) 
        .Select(n => n.Split(':').LastOrDefault().Trim()) 
        .FirstOrDefault(); 
    var status1 = LOG.Split('\n') 
        .Where(p => p.Trim().StartsWith("Assigned Group:")) 
        .Select(n => n.Split(':').LastOrDefault().Trim()) 
        .FirstOrDefault(); 
    

    another demo

    +1

    おかげで、出力が得られましたが、試してみると何が問題だったのですか?最初は10文字しか返しませんでした –

    +0

    小さな変化がありますそれを見てください。 –

    +0

    私はタスクがより複雑になっているのを見ます。 'Status:'と 'Assigned Group:'の後ろで部分文字列を取得する必要がありますか?私はどのポジションにある2人のための答えを更新しました。 –

    0
    string LOG = "Status: Assigned (1) \n Assigned Group: Jitesh - QWERTY"; 
    
    var split = LOG.Split('\n'); 
    var status = split[0].Split(':')[1]; 
    var status1 = split[1].Split(':')[1]; 
    
    +0

    希望の出力を出していない:( –

    +0

    今すぐ試してみよう... – sagivasan

    関連する問題