如何在LINQ中使用GetType声明属性包含

时间:2018-03-08 00:14:12

标签: c# linq

我目前正在开发API,而我正在使用的库需要初始化其大部分组件。它通过使用.include进行初始化。

示例通话为:context.Load(context.Projects, proj => proj.Include(p => p.Name))

尽可能地,我不想包含很多字段,因为执行查询需要更长的时间。所以我的一个想法是使用GetType().GetProperty(),看起来像这样:

context.Load(context.Projects, proj => proj.Include(
    p => p.Name,
    p => p.GetType().GetProperty(customFieldName)
));

我的假设是,当我这样做时,我将获得属性,但它似乎创建了一个不同的对象。我有什么方法可以做到这一点吗?

修改:我们的想法是customFieldName由用户提供,例如,用户提供了Id我希望在p.Id中获得等效性<script type="text/javascript" language="javascript" > $(document).ready(function(){ function fetch_product_data() { $.ajax({ url:"fetch.php", method:"POST", dataType:"json", success:function(data) { for(var count=0; count<data.length; count++) { var html_data = '<tr><td>'+data[count].id+'</td>'; html_data += '<td data-name="item_code" class="item_code" data- type="select" data-pk="'+data[count].id+'">'+data[count].item_code+'</td> </tr>'; $('#product_data').append(html_data); } } }) } $('#product_data').editable({ container: 'body', selector: 'td.item_code', url: "update.php", title: 'Item_code', type: "POST", dataType: 'json', source: [{value: "Code1", text: "Code1"}, {value: "Code2", text: "Code2"}], validate: function(value){ if($.trim(value) == '') { return 'This field is required'; } } }); </script> 包括声明。所以我可以将该对象的值返回给用户

1 个答案:

答案 0 :(得分:1)

实体框架还允许您根据名称将属性包含为字符串。通过这种方式,您可以决定在运行时包含的属性。所以你的代码现在应该是这样的。

context.Load(context.Projects, proj => proj.Include("Name", customFieldName));

如果您正在查看嵌套属性(例如:Name是一个具有属性FirstNameLastName)的类,您可以使用点来指定要包含的确切属性( "Name.FirstName")。