LINQ2SQL - FirstItem

时间:2011-12-02 03:17:58

标签: linq-to-sql

你如何获得第一项?似乎我必须做以下操作,否则我会得到一个错误,好像它是一个多项目,我不能得到它的第一个元素。

我的目标是从下面的代码中删除foreach循环。

                        MetaDataPropertyBag propertyBag = new MetaDataPropertyBag();

                        var dbResultsOfType = db.spi_GetTypesByCaseType(caseType);

                        foreach (var item in dbResultsOfType)
                        {
                            if (item.ASSOC_TYPE_ID == primaryChildTypeID)
                            {
                                propertyBag.CaseTypeDesc = item.DESCRIPTION;
                                propertyBag.Required = item.IS_REQUIRED == 'Y' ? true : false;
                                propertyBag.Parent = item.PARENT_ID.Value;
                                propertyBag.Child = item.CHILD_ID.Value;
                                propertyBag.AssocTypeID = item.ASSOC_TYPE_ID;
                                propertyBag.CaseTypeID = item.CASE_TYPE_ID;
                                break; // Only one entry is requested
                            }
                        }

2 个答案:

答案 0 :(得分:1)

FirstorDefault应该这样做: 关于firstordefault的MSDN文章

答案 1 :(得分:1)

这是一种方法:

var first = dbResultsOfType.FirstOrDefault(item => item.ASSOC_TYPE_ID == primaryChildTypeID);
if (first != null) {
    propertyBag.CaseTypeDesc = first.DESCRIPTION;
    propertyBag.Required = first.IS_REQUIRED == 'Y' ? true : false;
    propertyBag.Parent = first.PARENT_ID.Value;
    propertyBag.Child = first.CHILD_ID.Value;
    propertyBag.AssocTypeID = first.ASSOC_TYPE_ID;
    propertyBag.CaseTypeID = first.CASE_TYPE_ID;
}