将LINQ语句生成的字符串解析为方法

问题描述:

我想仅将string.Formate.Trip传递给tripChoose中引用的方法。到目前为止,它试图传递一个未为该方法格式化的字符串。如果我可以通过字符串的Trip部分,它就可以工作。有什么建议么?将LINQ语句生成的字符串解析为方法

private void LoadExpenseListSums() 
{ 
    expenseTotalSelect.Items.Clear(); 
    var sortedList= 
     from e in roster 
     group e by e.Trip into expenseCollect 
     select new { Trip = expenseCollect.Key, SumAmount = expenseCollect.Sum(e => e.Amount) }; 
    foreach (var e in sortedList) 
     tripChoose.Items.Add(string.Format("{0} | ${1}", e.Trip, e.SumAmount)); 
} 
+2

'expenseTotalSelect'类型是什么?这听起来好像不是LINQ的问题,但是使用任何你正在使用的控件 - 你可能只需要添加一个既有文本又有适当值的对象,并设置适当的绑定。 – 2012-04-25 06:40:36

+0

对不起,我把它发送到另一个组合框进行测试,它应该参考tripChoose。 – user1350264 2012-04-25 14:32:36

+0

那么,仍然没有回答什么tripChose是什么的问题,*正是* - 请记住,你还没有告诉我们这是WPF,WinForms,ASP.NET,还有其他东西... – 2012-04-25 14:35:53

权,现在我们确实知道我们正在处理,我怀疑你想是这样的:

private void LoadExpenseListSums() 
{ 
    expenseTotalSelect.Items.Clear(); 
    var dateSorted = 
     from e in roster 
     group e by e.Trip into tripGroup 
     select new { Trip = tripGroup.Key, 
        Text = string.Format("{0} | ${1}", 
              tripGroup.Key, 
              tripGroup.Sum(e => e.Amount) }; 
    tripChoose.DataSource = dateSorted; 
    tripChoose.DisplayMember = "Text"; 
    tripChoose.ValueMember = "Trip"; 
} 

这使得一些假设: ASE, - roster是内存中的集合:如果不是的话,你可能需要一个AsEnumerable调用格式化之前,要做到这一点本地 - 匿名类型使用数据绑定;我不确定是否是这种情况,但我希望它是

然后,您使用SelectedValue成员查找旅程ID。

认为你应该使用一个对象作为在评论所说,但是假设expenseTotalSelectList<string>tripChoose被绑定到它,你可以这样做:

(string)tripChoose.SelectedItem.Split('|')[0].Replace(" ", string.Empty) 
+0

它应该指tripChoose!对不起,我正在将项目发送到另一个组合框进行测试。 – user1350264 2012-04-25 14:33:27

它看起来像你的expenseTotalSelect是ASP.NET选择控件并在做什么最终在结果中添加一个元素HTML仅通过以下文本标识:

<select id='expenseTotalSelect'> 
    <option>Hawaii | $5000</option> 
    <option>London | $4000</option> 
    ... 
</select> 

在你expenseTotalSelect.Items.Add打电话,你可能会更好做以下几点:

expenseTotalSelect.Items.Add(
     new ListItem(string.Format("{0} | ${1}", e.Trip, e.SumAmount),e.Trip)); 

现在,当您呈现到HTML,你会得到如下:

<select id='expenseTotalSelect'> 
    <option value='Hawaii'>Hawaii | $5000</option> 
    <option value='London'>London | $4000</option> 
    ... 
</select> 

这将是容易只是引用tripChoose.SelectedItem.Value这将只包含e.Trip值(夏威夷或伦敦)这个例子