C# 将记录从列表传递到组合框,然后解析其中的一部分以向方法返回值
这里有三个要素C# 将记录从列表传递到组合框,然后解析其中的一部分以向方法返回值,c#,winforms,linq,C#,Winforms,Linq,这里有三个要素 一系列方法的旅行费用清单 windows窗体(tripChoose是一个组合框,listExpenses是一个列表框) 对象本身(旅行费用) 我只想通过e.Trip的“ToFind”方法。而是传递整个字符串。我只需要解析出e.Trip。有什么想法吗?我仍然希望金额和行程都显示在组合框中,但我只需要e.trip就可以传递到该方法。见下文: 在表格中,我有这个 private void LoadExpenseListSums() { expenseTotalSelect.It
private void LoadExpenseListSums()
{
expenseTotalSelect.Items.Clear();
var dateSorted =
from e in roster
group e by e.Trip into tripGroup
select new { Trip = tripGroup.Key, SumAmount = tripGroup.Sum(e => e.Amount) };
foreach (var e in dateSorted)
tripChoose.Items.Add(string.Format("{0} | ${1}", e.Trip, e.SumAmount));
}
private void tripChoose_SelectedIndexChanged(object sender, EventArgs e)
{
listExpenses.Items.Clear();
tripTextBox.Clear();
descriptionTextBox.Clear();
amountTextBox.Clear();
paymentMethodTextBox.Clear();
noteTextBox.Clear();
IEnumerable<TripExpense> selectedExpenses = roster.ToFind((string)tripChoose.SelectedItem);
foreach (TripExpense item in selectedExpenses)
listExpenses.Items.Add(item);
}
如果将LoadExpenseListSums重写为以下内容,则可以正常工作:
private void LoadExpenseListSums()
{
expenseTotalSelect.Items.Clear();
var dateSorted =
from e in roster
group e by e.Trip into tripGroup
select new { Trip = tripGroup.Key };
foreach (var e in dateSorted)
tripChoose.Items.Add(e.Trip);
}
我看到你在这样做:
foreach (var e in dateSorted)
tripChoose.Items.Add(string.Format("{0} | ${1}", e.Trip, e.SumAmount));
然后,您要完成以下任务:
roster.ToFind((string)tripChoose.SelectedItem);
但是,当你完成了寻找的事情,你想它只需要e.旅行,而不是e.数量
现在,假设我写的是你想要的东西,你可以做简单的事情
首先,让舒尔确保string.Format(“{0}|${1}”,e.Trip,e.sumamunit)
是按您在这里看到的格式编写的。然后您可以删除tripChoose中不需要的部分。根据格式化的|字符选择EdItem。作为一个想法,您可以使用一个
string myItem = (string)tripChoose.SelectedItem;
int removingIndex;
for (int i = 0; i < myItem.Length; i++)
{
if (myItem[i] == '|')
{
removingIndex = i;
i = myItem.Length;
}
}
myItem.Remove(removingIndex);
string myItem=(string)tripChoose.SelectedItem;
删除索引;
for(int i=0;i
这是最好的方式吗。。。?不,但这是最基本的想法
现在,您可以将花名册.ToFind
与只有e.Trip部分的myItem
字符串一起使用
希望这能有所帮助,我想采取一些不同的方法来做这件事 声明一个临时类
public class tempTrip
{
public string Trip;
public string dispText { get; set;}
}
现在更改loadExpenseSistSums()函数
private void LoadExpenseListSums()
{ExpenseToalSelect.Items.Clear();
var dateSorted=
来自名册中的e
e组乘e组,进入tripGroup
选择新的标签
{Trip=tripGroup.Key,dispText=string.Format(“{0}|${1}”,tripGroup.Key,tripGroup.Sum(e=>e.Amount)).Tostring();
tripChoose.DisplayMember=“dispText”;
tripChoose.DataSource=dateSorted.ToList();
}
现在在tripChoose\u SelectedIndexChanged中,您可以编写
IEnumerable<TripExpense> selectedExpenses = roster.ToFind(((tempTrip)tripChoose.SelectedItem).Trip);
// this will give you Trip from the selected item.
IEnumerable selectedExpenses=花名册.ToFind(((testrip)tripChoose.SelectedItem.Trip);
//这将使您从所选项目开始旅行。
我迷路了,你有什么问题吗?你不能基于|
进行拆分并获取值吗?谢谢,我正在我的行程选择下拉列表中显示此值:Payroll.ExpenseRecordPerform+诱惑rip我只需要获取格式化字符串,以在class a属性中显示Make dispText。它会起作用的。查看更改后的代码。
private void LoadExpenseListSums()
{ expenseTotalSelect.Items.Clear();
var dateSorted =
from e in roster
group e by e.Trip into tripGroup
select new tempTrip
{ Trip = tripGroup.Key, dispText = string.Format("{0} | ${1}", tripGroup.Key, tripGroup.Sum(e => e.Amount)).Tostring() };
tripChoose.DisplayMember = "dispText";
tripChoose.DataSource = dateSorted.ToList<tempTrip>();
}
IEnumerable<TripExpense> selectedExpenses = roster.ToFind(((tempTrip)tripChoose.SelectedItem).Trip);
// this will give you Trip from the selected item.