从LINQ查询结果中返回单个属性

18

下面的表达式返回了一个联系人-带有数十个属性的整个联系人。虽然这很好,但是理想情况下,我希望仅返回联系人的Id (contact.contactId) 属性。我该怎么做?

var assocOrg = Contacts.Where(x => x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ");
5个回答

39
var result = Contacts.Where(x => ...)
                     .Select(x => x.ContactID);
或者
var result = from x in Contacts
             where x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ"
             select x.ContactID;

4

如果您想获取与您的条件匹配的单个或第一个对象,请使用以下方法:

  var result = Contacts.Where(x => ...)
   .Select(x => x.ContactID).FirstOrDefault();

1
var result = Contacts.Where(x => ...)
           .Select(x => x.ContactID).FirstOrDefault();

1
var assocOrg = Contacts.
               Where(x => x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ").
               Select(x => x.contactId);

1
var assocOrg = Contacts.Where(x => x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ").Select(x=> x.contactId).FirstOrDefault();

这将会获取到第一个ContactId,而下面的代码则会获取到一系列的ContactId。
var assocOrg = Contacts.Where(x => x.ContactTypeID == 2 && x.OrganizationName == "COMPANY XYZ").Select(x=> x.contactId);

在SQL风格中,这将是这样的。
var assocOrg = from contact in Contacts
               where contact.ContactTypeId == 2 && contact.OrganizationName == "COMPANY XYZ"
               select contact.ContactId;

你说得对,应该修复它,我现在正在将其放入 VS 进行测试。 - Howel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接