小编Isa*_*son的帖子

将子列表转换为父类型列表

为简洁起见,我将在这里通用.我有一个基类 - 评论 - 有一个孩子 - ShelfAwarenessReview.

我也有一个方法,其接口需要签名:

public List<Review> GetReviews(string filePath)
        {
            XElement xmlDoc = XElement.Load(filePath);

            var dtos = from item in xmlDoc.Descendants("message")
                       select new ShelfAwarenessReview()
                       {
                           PubDate = item.Element("meta").Attribute("permlinkdate").Value,
                           Summary = item.Element("meta").Element("summary").Value,
                           Isbn = item.Element("BookInfo").Element("ISBN").Value
                       };

            List<Review> reviews = new List<Review>();
            reviews = dtos.ToList();

            return reviews;
        }
Run Code Online (Sandbox Code Playgroud)

现在,我得到的错误是List<ShelfAwarenessReview>无法隐式转换为List<Review>.

我尝试了几种类型的铸造 - 或者,至少我认为我做过 - 而且它不起作用.我认为因为ShelfAwarenessReview是Review的孩子,这会起作用.毕竟,正如传承格言所说,"所有烤面包机都是电器,但并非所有电器都是烤面包机"......

我需要做些什么来获取ShelfAwarenessReviews列表以退出方法作为其父类型列表(Review)?

只是一个FYI,调用此方法的代码不打算关注它所获得的类型评论.随后的代码将以任何方式运行.

我非常感谢.

.net c#

2
推荐指数
1
解决办法
2602
查看次数

SQLServer中的varchars是否保留其编码?

如果我将来自C#的windows-1252字符串(例如带有"智能引号"的字符串)保存到SQLServer数据库的记录中,如果我将其读回另一个字符串变量,是否会保留编码?

c# sql-server

2
推荐指数
1
解决办法
308
查看次数

DateTime.TryParse只用于Time参数?

我正在写一个在下午4点和凌晨5点调用方法的服务.我想保持这些时间不被硬编码,所以我想将它们放在我的appconfig中.

这是我的代码:

public bool CheckTime() 
        {
            DateTime startTime;
            DateTime endTime; 

            DateTime.TryParse(ConfigurationManager.AppSettings["ProcessingStartTime"], out startTime);
            DateTime.TryParse(ConfigurationManager.AppSettings["ProcessingEndTime"], out endTime);

            if(DateTime.Now.TimeOfDay.Equals(startTime) || DateTime.Now.TimeOfDay.Equals(endTime))
                return true;
            else
                return false;
        }
Run Code Online (Sandbox Code Playgroud)

但是,因为我只想将时间存储为字符串(就像"下午4点"一样简单),如何解析和封装JUST时间在DateTime对象中?还是有另一个对象?我不关心日期,它只需要是任何给定年份的任何给定周的MF.

多谢你们.

c#

2
推荐指数
1
解决办法
6050
查看次数

需要帮助编写 LINQ 语句

我有一个与表具有一对多关系的许可实体/表PermitDetailsPermitDetails包含有关许可证表中所示气体的限制信息。限值以特定单位表示(GPerBhpHr、LbPerHr 等...)。

许可 许可证详情 许可证构成类型

我有一组属性,我的视图数据绑定到(WPF/MVVM),它们代表每个 PermitConstituentType 及其相应的“限制”。例如:

    // this set of properties is duplicated for each gas type (PermitConstiutentType)
    public double NitrousOxidesPpmAt15PercentOxygen {get; set;}
    public double NitrousOxidesLbMmbtuHHV {get; set;}
    public double NitrousOxidesGbhph {get; set;}
    public double NitrousOxidesC3LbHr {get; set;}
    public double NitrousOxidesTpy {get; set;}
Run Code Online (Sandbox Code Playgroud)

我想使用 EF/LINQ 查询 PermitDetails 表,并为每个 PermitConstituentType 返回与 PermitDetails 计量单位相对应的值,以便可以将其分配给正确的属性。

在某些情况下,它将返回 null,而在其他情况下,它将返回 double 值。例如,在 PermitConstituentTypeId = 2 的情况下,我的查询将为 PpmAt15PercentOxygen 返回 92.2。同样,无论返回的是 null 还是值,我都想将该值分配给相应的属性。

我尝试过的这条语句让我获得了与我想要的 PermitConstituentId 匹配的记录:

var noxRecord = CurrentPermit.PermitDetails.Where(a => a.PermitConstituentTypeId == 2);
Run Code Online (Sandbox Code Playgroud)

但从那里我不知道如何开始获取我需要的每个限制/指标的值,例如 …

c# linq entity-framework

2
推荐指数
1
解决办法
108
查看次数

.NET编码中的字符串是否不可知?

我的问题很简单:.net编码中的字符串是否不可知?

我问这个是因为当我摄取一个我知道用某些windows-1252代码页元素(即智能引号)编码的xml文件时,在调试器中查看持有我的xml的字符串似乎想要解析单个"智能引号" "到一个带有问号的三角形.这让我想知道.NET是否断言持有我的XML的字符串是UTF8,因此无法解决差异.

这是一个问题,如果是这样,因为如果字符串被转换,那么我的web服务意味着从我的文本中擦除窗口智能引号将失败,因为它无法识别三角形/问号标记.

请帮忙.

c#

1
推荐指数
1
解决办法
291
查看次数

使用过滤器将Linq上的CDATA内部值提取到XML

我正在使用此代码从XML中检索我想要的值:

IEnumerable<ForewordReview> reviews = null;
try
{
    reviews = from item in xmlDoc.Descendants("node")
              select new ForewordReview()
              {
                  PubDate = item.Element("created").ToString(),
                  Isbn = item.Element("isbn").ToString(),
                  Summary = item.Element("review").ToString()
              };
} // ...
Run Code Online (Sandbox Code Playgroud)

顺便说一下,客户端现在几乎每个带有CDATA的标签都会传递给我们,我需要提取它:

<review>
    <node>
        <created>
            <![CDATA[2012-01-23 12:40:57]]>
        </created>
        <isbn>
            <![CDATA[123456789]]>
        </isbn>
        <summary>
            <![CDATA[Teh Kittehs like to play in teh mud]]>
        </summary>
    </node>
</review>
Run Code Online (Sandbox Code Playgroud)

我已经看到了几个从CDATA标记中提取这些值的解决方案,其中一个是在LINQ语句中使用where子句:

where element.NodeType == System.Xml.XmlNodeType.CDATA
Run Code Online (Sandbox Code Playgroud)

我有点看到这里发生了什么,但我不确定这与我如何使用Linq(特别是从所选项目构建对象)有关.

我是否需要单独对select语句中的项应用此过滤器?否则,我真的不明白这将如何使用我正在使用的代码.

一如既往,我很感激帮助.

c# xml linq

1
推荐指数
1
解决办法
3057
查看次数

如何"ToString"大量的字符数组?

我有以下代码:

public static void PrependEntitiesToFile(string pathToFile)
{
    char[] buffer = new char[10000];
    FileInfo file = new FileInfo(pathToFile);

    string renamedFile = file.FullName + ".orig";
    System.IO.File.Move(file.FullName, renamedFile);

    using (StreamReader sr = new StreamReader(renamedFile))
    using (StreamWriter sw = new StreamWriter(file.FullName, false))
    {
        string entityDeclaration = "foo";
        sw.Write(entityDeclaration);
        string strFileContents = string.Empty;
        int read;
        while ((read = sr.Read(buffer, 0, buffer.Length)) > 0)
        {
            for (int i = 0; i < buffer.Length; i++)
            {
                strFileContents += buffer[i].ToString();
            }
        }
        sw.Write(strFileContents, 0, strFileContents.Length);

    }

    System.IO.File.Delete(renamedFile);
} …
Run Code Online (Sandbox Code Playgroud)

c#

0
推荐指数
1
解决办法
141
查看次数

正则表达式隔离特定子字符串

我有一个我从File.ReadAllText检索的字符串:

6   11 rows processed
Run Code Online (Sandbox Code Playgroud)

如您所见,总是有一个整数指定此文档中的行号.我感兴趣的是它之后的整数和"行处理"字样.所以在这种情况下,我只对子串"11行处理"感兴趣.

因此,知道每一行将以整数开始,然后是一些空格,我需要能够隔离它后面的整数和单词"rows processed"并将其自身返回给字符串.

有人告诉我这很容易用Regex,但到目前为止我还没有最微弱的线索如何构建它.

c# regex

0
推荐指数
1
解决办法
544
查看次数

将 WPF 视图分解为组件并维护数据绑定

我正在 WPF/MVVM 中开发一个标准数据输入应用程序。我有一个名为 LabSetupView.xaml 的文件,其中有三个控件:

  1. 用于显示可用实验室的组合框
  2. 用于显示技术人员的组合框
  3. 用于测试的列表视图

这些控件旨在协同工作 - 当用户选择技术人员时,仅显示该技术人员 ID 的测试。这是通过技术人员到测试的导航属性完成的。

我正在考虑将这些控件分别作为 a 移动到它们自己的 .xaml 文件中<UserControl>,然后将它们嵌套在 中,<Window>因为 LabSetupView.xaml 的 DataContext 只能设置一次。因此,我想如果我将控件组件化,我可以为每个控件创建 ViewModel(即 LabView.xaml/LabViewModel.xaml 等...),并且每个控件都继承自实现必要的INotifyPropertyChanged.

我的问题是:拥有一个本身没有数据上下文但包含单独的 UserControls 的底板 .xaml 文件是否是一种常见或正常的做法,每个 UserControls 都有自己的数据上下文?

我问这个问题是因为我担心如果我尝试这样的事情,那么数据绑定和 INotifyProperChanged 将无法一起工作,因为这些视图是组件化的。换句话说,我上面的用例(为技术人员获取测试)不会绑定或更新属性。

c# data-binding mvvm wpf-controls

0
推荐指数
1
解决办法
745
查看次数

标签 统计

c# ×9

linq ×2

.net ×1

data-binding ×1

entity-framework ×1

mvvm ×1

regex ×1

sql-server ×1

wpf-controls ×1

xml ×1