Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq查询where子句返回null_C#_Xml_Linq_Linq Query Syntax - Fatal编程技术网

C# Linq查询where子句返回null

C# Linq查询where子句返回null,c#,xml,linq,linq-query-syntax,C#,Xml,Linq,Linq Query Syntax,这是我试图获取标记元素Posted\u Status的XML文件,Posted\u Status已经准备就绪 <?xml version="1.0" encoding="utf-8"?> <Server> <Network> <---Network is the parent element <Posted_Status id="10">Ready</Posted_Status> <

这是我试图获取标记元素Posted\u Status的XML文件,Posted\u Status已经准备就绪

<?xml version="1.0" encoding="utf-8"?>
<Server>
      <Network> <---Network is the parent element
        <Posted_Status id="10">Ready</Posted_Status>
        <Timed_On id="10">7/28/2013 9:32:10 AM</Timed_On>
        <Timed_Off id="10">8/28/2013 9:32:10 AM</Timed_Off>
      </Network>
</Server>
这将执行或调用查询,并显示标记值等于“就绪”的
Posted\u Status
XML标记中的所有值

foreach(字符串exp到期)
{
对于(int i=0;i
您不需要在
where
子句中强制转换为字符串,还需要将其与如下值进行比较

where exp.Element("Posted_Status").Value == "Ready"
尝试:

对于输出:

foreach (var item in expiration)
{
    Console.WriteLine("Timed_On: {0} \r\nTimed_Off: {1}", item.Timed_On, item.Timed_Off );
}

(如果您将值解析为一个属性
DateTime
对象,效果会更好)

您的
来自
其中
读取
元素(“已发布状态”)

根据更新的问题进行编辑,应该是:

XElement main = XDocument.Load(fi.FullName).Element("Server");
var expiration = from exp in main.Elements("Network")
 where exp.Element("Posted_Status").Value == "Ready"
 select exp;
您必须先读取根元素。然后遍历所有“网络”并检查“发布状态”值


这将返回符合条件的所有“网络”元素

出于某种原因,它返回空值仍然可能是我调用或执行查询的方式或something@Habib他是不是缺少了ToList()来获得结果?@EhsanUllah,不是真的,当使用
foreach
循环进行迭代时,它会执行(迭代)查询。
XElement
定义cast操作符,以适当的格式返回
;除了不区分大小写之外,你和OP所做的没有什么真正的区别。@Habib现在这对我来说是新的。我将发布main,main的定义如下:XElement main=XElement.Load(fi.FullName);它仍然是空的,它需要从该元素中准备好值,但我希望查询在接收之前验证该值。您可以发布整个XML文件吗?我更改了查询,它可能会让您更好地了解我要做的事情,这只会给我提供网络值,如果发布的状态有一个值为Ready,我需要显示发布的状态
var expiration =
       from exp in main.Elements("Network")
       where exp.Element("Posted_Status").Value.Equals("Ready", StringComparison.CurrentCulture)
       select
       new
       {
           Timed_On = exp.Element("Timed_On").Value,
           Timed_Off = exp.Element("Timed_Off").Value,
       };
foreach (var item in expiration)
{
    Console.WriteLine("Timed_On: {0} \r\nTimed_Off: {1}", item.Timed_On, item.Timed_Off );
}
XElement main = XDocument.Load(fi.FullName).Element("Server");
var expiration = from exp in main.Elements("Network")
 where exp.Element("Posted_Status").Value == "Ready"
 select exp;