c # bindingsource и linq - PullRequest
       19

c # bindingsource и linq

1 голос
/ 28 июля 2010

У меня есть источник привязки, который был заполнен

tableadapter.fill (DS, param1);

допустим, что этот источник связывания имеет:

char num
A     1
B     2
C     3

как получить значение num с данным символом 'A' с помощью linq?

Я мог бы выполнять литерацию, используя foreach (данные DataRowView в this.p_EM_Select_Event_TypeBindingSource), но я хотел бы знать, как это сделать в linq

Спасибо,

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Это должно помочь:

http://msdn.microsoft.com/en-us/library/bb399401.aspx

ура

0 голосов
/ 18 мая 2017

Во-первых, вам нужно указать тип данных.

Поскольку вы этого не сделали, я создам его здесь в качестве заполнителя:

public class Data1
{

    public Data1()
    {
        Character = String.Empty;
        Number = -1;
        Other = null;
    }

    public String Character { get; set; }

    public int Number { get; set; }

    public object Other { get; set; }

}

Теперь, когда у вас есть данныетипа, мы можем предположить, что ваш BindingSource заполнен данными этого типа:

Где-то в вашем коде, вы должны заполнить свой BindingList:

p_EM_Select_Event_TypeBindingSource.DataSource = new List<Data1>();

Методы, подобные ниже, делают хорошие обертки дляэти типы задач:

public int GetIndex(String value)
{
    var result = -1;
    if (!String.IsNullOrEmpty(value))
    {
        var list = (IList<Data1>)p_EM_Select_Event_TypeBindingSource.List;
        if (list.Any(x => x.Character == value))
        {
            result = list.IndexOf(list.First(x => x.Character == value));
        }
    }
    return result;
}

public int GetNumber(String value)
{
    var result = -1;
    if (!String.IsNullOrEmpty(value))
    {
        var item = list.IndexOf(list.FirstOrDefault(x => x.Character == value));
        if (item != null)
        {
            result = item.Number;
        }
    }
    return result;
}

Чтобы установить BindingSource для вашего элемента данных с данным символом «A», вы можете вызвать свой метод:

p_EM_Select_Event_TypeBindingSource.Position = GetIndex("A");

Или, чтобы получить числок вашему элементу данных с данным персонажем вы можете вызвать похожий метод:

var number = GetNumber("A");
...