Using C#, WPF, .NET 4.5 In my program, I am trying to populate the value of a TextBox from a database. The value is obtained by a LINQ statement. I've tried all different things such as To.String() and Console.WriteLine() etc. If you can figure out a way to make this work that would be awesome, if you can find a better way to select the data and display it, i would be interested in that as well. C# Code:

private AuroraEntities auroraContext = null;    
private void LoadTB()
    { 
     this.auroraContext = new AuroraEntities();
     ObjectQuery<Inventory> inventories = auroraContext.Inventories;
     string name = ingNameCB.SelectedValue.ToString();  
     var queryResult = (from q in inventories
                        where q.InventoryName == name                          
                        select q);

    textBox1.DataContext = queryResult.ToString();
    }

XAML:

<TextBox Height="23" HorizontalAlignment="Left" Margin="70,186,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding Path=InventoryName, Mode=TwoWay}" 

thanks!

有帮助吗?

解决方案

Are you expecting a single result? If so, use First, or Single, or FirstOrDefault to obtain a single Inventory item (which of these options is most appropriate will depend on your situation). However, you will then have an Inventory item, an Inventory.ToString() may well not give you what you want either.

What are you trying to display from the inventory? Its name? Its description? Perhaps a combination? You should think about that very carefully - once you've decided what you're actually trying to achieve, writing the code for it is likely to be quite simple.

If your query could return multiple results, you've got even more to think about. Does it even make sense to have a single textbox? Perhaps you should be populating a table of some kind?

其他提示

Something like this:

(from q in inventories
 where q.InventoryName == name                          
 select q).FirstOrDefault().InventoryName;

You need also to check if FirstOrDefault() is not null

Hi you can try it like this

var result = queryResult.FirstOrDefault();
textBox1.Text=result==null ? string.Empty :result.InventoryName;

I think there is no point of doing binding if your InventoryName dont fire NotifyPropertyChanged so its better you directly assign Text instead of DataContext

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top