linq to sql, только выбирая данные из столбцов в объекте, которые не являются нулевыми - PullRequest
0 голосов
/ 01 сентября 2010

Я пытаюсь создать строку, содержащую значения полей в объекте linq to sql. дело в том, что я хочу только получить поля, которые не равны нулю

Я уверен, что есть способ сделать это. кто-нибудь может просветить меня?

mylinqdatacontext dc = new mylinqdatacontext;
StringBuilder sb = new StringBuilder();
mylinqtype item = (from x in dc.mylinqtypes where x.id.equals(1)).single();
var props = typeof(mylinqtype).GetProperties();

foreach(PropertyInfo p in props){

  if(item... != null){
    sb.append(p.name + " :" + item[p].value; //or some such i dont really know
  }
}

любая помощь высоко ценится

Я пытался

object theValue =  p.getgetmethod().invoke(item, null); 

но выдается исключение System.Reflection.TargetException спасибо

нац

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Это не проверено, но я думаю, что это должно вас как минимум приблизить:

SomeDataContext dc = new SomeDataContext();
StringBuilder sb = new StringBuilder();

SomeItem item = (from x in dc.SomeItems where x.SomeItemId == 1 select x).Single();
PropertyInfo[] props = item.GetType().GetProperties();

foreach (PropertyInfo p in props)
{
    if (p.CanRead) // might need more tests here for various attributes of the property
    {
        object val = p.GetValue(item, null);

        if (val != null)
        {
            sb.Append(p.Name + " : " + val);
        }
    }
}
0 голосов
/ 01 сентября 2010
using (var dc = new DataContext())
{
    var result = dc.Entities.Where(x => c.Column != null).Select(x => x.Column)
                 .Aggregate((x, y) => x + y);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...