从c#中的IList访问字段值

时间:2015-12-02 04:32:23

标签: c# linq

我有IList<T>有数据,我想从IList访问字段值。

我在下面写了代码来获取字段值

IList<T> source;
source.FirstOrDefault().Field("ParentID")

我想访问ParentID字段值。

但是在构建解决方案时它会出现以下错误:

  

&#34;&#39; T&#39;不包含&#39; Field&#39;的定义没有扩展方法&#39; Field&#39;接受第一个类型&#39; T&#39;可以找到(你错过了使用指令或汇编引用吗?)&#34;

我添加了System.Xml,System.Xml.Linq和System.Collections.Generic程序集,但它仍然无法正常工作。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

以下是一些仿制药101。

我们假设您有一个名为Node的类,其中包含一个名为ParentID的属性。

public class Node 
{
    public int ParentId { get; set; }
}

现在定义节点列表。基本上是一个对象数组。在List<T> T中,IList<Node> source; 指的是列表中的对象类型。所以你要这样定义:

source

然后您需要填充名为ParentId的列表。

然后你可以用你编写的代码选择source.FirstOrDefault().Field("ParentID")

final DragSource dragSource = new DragSource(tv.getTree(), DND.DROP_MOVE | DND.DROP_COPY | DND.DragOver );
                dragSource.addDragListener(new DragSourceAdapter(){
                    @Override
                    public void dragFinished(DragSourceEvent event) {
                        dragSource.dispose();
                    }

                    @Override
                    public void dragSetData(DragSourceEvent event) {
                        final TreeItem[] dndSelection = tv.getTree().getSelection();
                        final String[] sourceNames = new String[dndSelection.length];
                        String docName = "document";
                        for (int i = 0; i < dndSelection.length; i++) {
                            final TreeItem item = (TreeItem) dndSelection[i];
                            final PendingTreeNode node = (PendingTreeNode) item
                                    .getData();
                            sourceNames[i] = node.getNodeId();
                            docName = node.getName();
                        }
                        final String filePath = AlfrescoFileUtil.getFileURL(sourceNames[0]);
                        final String viewDetailLink = AlfrescoFileUtil.getSearchFileURL(sourceNames[0]);
                        final String viewDetailsLabel = "View details";
                        StringBuffer finalS = new StringBuffer();
                        finalS.append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Calibri;}}{\\colortbl ;\\red0\\green0\\blue255;}{\\*\\generator Msftedit 5.41.21.2509;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\lang9\\f0\\fs22{\\field{\\*\\fldinst{HYPERLINK \"" + filePath + "\"}}{\\fldrslt{\\ul\\cf1 " + docName + "}}}");
                        finalS.append(" | ");
                        finalS.append("{\\field{\\*\\fldinst{HYPERLINK \"" + viewDetailLink + "\"}}{\\fldrslt{\\ul\\cf1 "+ viewDetailsLabel + "}}}}}");
                        event.data = finalS.toString();
                    }
                });
                dragSource.setTransfer(new Transfer[]{RTFTransfer.getInstance()});
                dragSource.notifyListeners(SWT.DragDetect, event);

答案 1 :(得分:0)

将source.FirstOrDefault()转换为适当的类,例如:((Employee)source.FirstOrDefault()).Field("ParentID")