0

レコードを編集するためのフォームがありListBoxます。TextBoxまた、のComboBoxタイプを選択する必要がありますtrip(これはフォーム内で定義されています)。

    private void LoadExpenseList()
        {
            tripSelect.Items.Clear();
            var dateSorted =
                from e in roster
                orderby e.Trip
                select e;
            foreach (var e in dateSorted)
                tripSelect.Items.Add(e.Trip);
        }

private void tripSelect_SelectedIndexChanged(object sender, EventArgs e)
        {
            selectedExpense = (ExpenseItem)roster.TripFind((string)tripSelect.SelectedItem);
            listExpenses.Items.Add(selectedExpense);
        }


 private void listExpenses_SelectedIndexChanged(object sender, EventArgs e)
        {}

ここで、 を選択するtripと、 に渡された最初の結果だけが取得されますListBox。その理由は次のとおりです (これはリスト クラスで定義されています)。

public ExpenseItem TripFind(string trip)
    {
        var specificExpenseItem =
           from e in this
           where e.Trip == trip
           select e;
        if (specificExpenseItem.Count() >= 1)
            return specificExpenseItem.First();
        return null;
    }

書き直そうとするたびに問題が発生し続けます。私は、not all paths return a valueまたはJITデバッガーが、これを乗り越えることができないと言っています。

これが私が試した最後のことです:

public ExpenseItem TripFind(string trip)
    {
        var specificExpenseItem =
           from e in this
           where e.Trip == trip
           select e;
        foreach (var e in specificExpenseItem);
        return null;
    }

何か助けはありますか?

4

1 に答える 1

0

それをすべて置き換えることができます

return this.FirstOrDefault(e => e.Trip == trip);
于 2012-04-22T22:54:19.907 に答える