使用LINQ返回的对象

骗子

我正在使用LINQ从XML文件中查找对象。找到对象后,我想打印其详细信息,但是我不确定如何使用找到的对象。

这是我的代码:

var apartmentExist =
    from apartment1 in apartmentXml.Descendants("Apartment")
    where (apartment1.Attribute("street_name").Value == newApartment.StreetName) &&
          (apartment1.Element("Huose_Num").Value == newApartment.HouseNum.ToString())
    select apartment1.Value;
if (apartmentExist.Any() == false)
{
    Console.WriteLine("Sorry, Apartment at {0} or at num {1}", newApartment.StreetName,
        newApartment.HouseNum);

}
else
{

    //print the details of apartment1
}

我的XML是:

<?xml version="1.0" encoding="utf-8"?>
<Apartments>
  <Apartment street_name="sumsum">
    <Huose_Num>13</Huose_Num>
    <Num_Of_Rooms>4</Num_Of_Rooms>
    <Price>10000</Price>
    <Flags>
      <Elevator>true</Elevator>
      <Floor>1</Floor>
      <parking_spot>true</parking_spot>
      <balcony>true</balcony>
      <penthouse>true</penthouse>
      <status_sale>true</status_sale>
    </Flags>
  </Apartment>
</Apartments>
马尔辛·侏罗塞克
  1. 您的LINQ查询返回IEnumerable<XElement>如果您希望它返回更多,则可以使用foreach循环来打印元素,如果只有一个结果,则可以调用.Single()扩展方法来获取XElement,而不是集合:

  2. XElementstring使用XElement.Value属性相比,强制转换为更安全,因为NullReferenceException在元素不存在时不会抛出您还应该使用(int)XElement强制转换和比较数字,而不是XElement.Value将其与数字的字符串表示形式进行比较。

  3. 您不应使用Descendants方法,Elements使用这将使您的查询更快,因为仅将处理需要搜索的元素。

  4. 您应该先致电FirstOrDefault并检查结果是否null代替,Any然后再First致电。这将阻止您的查询执行两次。

  5. 而不是返回本身apartment1.Value为a的stringreturn apartment1它将成为XElement您,以后有必要时您就可以了解它的内容。

    var apartmentExist =
        from apartment1 in apartmentXml.Root.Elements("Apartment")
        where ((string)apartment1.Attribute("street_name") == newApartment.StreetName) &&
          ((int)apartment1.Element("Huose_Num") == newApartment.HouseNum)
        select apartment1;
    
    var apartment = apartmentExist.FirstOrDefault();
    
    if (apartment == null)
    {
        Console.WriteLine("Sorry, Apartment at {0} or at num {1}", newApartment.StreetName, newApartment.HouseNum);
    }
    else
    {
        // you can use apartment variable here. It's an XElement
        var huoseNum = (string)apartment.Element("Huose_Num");
    
        // flags
        foreach(var flag in apartment.Elements("Flags"))
        {
            var name = flag.Name;
            var value = (string)flag;
        }
    }
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Linq 从嵌套类返回新对象

来自分类Dev

如何使用 linq 返回与 lambda 相同的对象

来自分类Dev

返回新的 LINQ 对象

来自分类Dev

C#Linq返回对象

来自分类Dev

从分组的LINQ语句返回值的对象

来自分类Dev

LINQ可以返回嵌套的对象集吗?

来自分类Dev

Unity linq返回匹配对象

来自分类Dev

Linq to Entities多对多返回嵌套对象

来自分类Dev

循环并更新LINQ查询,返回多个对象

来自分类Dev

防止LINQ to SQL返回子对象

来自分类Dev

IEnumerable类型的LINQ对象不返回DataTable

来自分类Dev

Linq to EF:返回 IQueryable 对象的混淆

来自分类Dev

使用Linq合并列表中对象方法返回的所有列表

来自分类Dev

如何使用LINQ表达式从模拟存储库返回新对象?

来自分类Dev

使用Linq合并列表中对象方法返回的所有列表

来自分类Dev

如何使用LINQ表达式从模拟存储库中返回新对象?

来自分类Dev

如何使用LINQ select将模型数据的返回类型从Product实体转换为ProductViewModel对象?

来自分类Dev

使用LINQ分页对象列表

来自分类Dev

使用linq填充子对象

来自分类Dev

使用Linq过滤Json对象

来自分类Dev

使用Json结果列表作为mvc actionresult的参数,以使用Linq和Lambda从数据库返回对象

来自分类Dev

使用Stripe返回的对象/列表

来自分类Dev

使用toString()方法返回对象

来自分类Dev

使用“ with”创建的对象返回“ None”

来自分类Dev

如何使用Ajax返回的对象

来自分类Dev

Linq查询联接两个表并从第一个表返回对象-使用的PagedList

来自分类Dev

使用LINQ在分组对象中返回项目1至3和4至6和7至9

来自分类Dev

Linq查询联接两个表并从第一个表返回对象-使用的PagedList

来自分类Dev

如何仅选择一列以在linq中返回对象

Related 相关文章

热门标签

归档