2012-01-26 61 views
1

我有大约30个属性的userObject。如何使用linq更新对象?

我从服务器获取一个更新的userObject,只设置那些已经改变的属性,并将其余的设置为null。

我目前正在使用一个foreach和chk从服务器的值不是null然后更新它。有没有办法只是更新使用LINQ非空的单元格?

LINQ到对象

public class UserProfile 
    { 
     public string string00 { get; set; } 
     public string string01 { get; set; } 
     public string string02 { get; set; } 
     public string string03 { get; set; } 
     public string string04 { get; set; } 

     public boolean bool00 { get; set; } 
     public boolean bool01 { get; set; } 
     public boolean bool02 { get; set; } 
     public boolean bool03 { get; set; } 
     public boolean bool04 { get; set; } 
    } 
+0

LINQ到什么地步? LINQ到对象? LINQ to SQL?实体框架? – Steven

+0

您可以发布您现在使用的代码吗? – dasblinkenlight

回答

2

您可以使用反射。

class Program 
{ 
    static void Main(string[] args) 
    { 
     myClass currentObj = new myClass() { Text = "test", Value = 5 }; 
     myClass updatedObj = new myClass() { Text = "test 2 ", Value = 6 }; 
     Type cType = currentObj.GetType(); 
     var fieldInfos = cType.GetFields(); 

     foreach (var fieldInfo in fieldInfos) 
     { 
      if (fieldInfo.GetValue(updatedObj) != null) 
      { 
       fieldInfo.SetValue(currentObj, fieldInfo.GetValue(updatedObj)); 
      } 
     } 
    } 
} 

class myClass 
{ 
    public string Text; 
    public int Value; 
} 

只是模板的代码,并将其更改为一个函数。 一些更多信息:here

+0

thx ..我已经得到它与反射工作,但想知道是否有可能实现相同的事情,使用LINQ – abe

+0

我想你可以在反射对象上使用LINQ,而不是上面的foreach循环,但这将是强大的怪异。 – zmbq

+0

我只是觉得它会更清洁一些如何 – abe