RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-222542

Bulson's questions

Martin Hope
Bulson
Asked: 2022-05-23 00:29:06 +0000 UTC

为什么`(false == []) === true`?[复制]

  • 4
这个问题已经在这里得到了回答:
比较 JavaScript 时的标量类型转换 2 个答案
1 年前关闭。

我正在为社交做准备。我想知道为什么

(false == []) === true, 同时

(false == Boolean([])) === false.

如何解释这样的现象?

我知道在第一种情况下将调用数组ToPrimitive(),然后它应该像这样工作valueOf()。也许我错了,但看起来这个方法会返回length0,这是一个假值,对吧?

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2021-12-09 01:11:48 +0000 UTC

FluentBuilder 用于不可变类

  • 11

总的来说,在这个问题之后,我决定写一个例子,但不幸的是我没有掌握它😢。也许你们中的一个可以帮我完成它。

我们有这样一类人

class Person
{
    public Person(string firstName, string lastName,
        Address address, Employment employment)
    {
        FirstName = firstName;
        LastName = lastName;
        Address = address;
        Employment = employment;
    }

    public string FirstName { get; }
    public string LastName { get; }
    public Address Address { get; }
    public Employment Employment { get; }

    public override string ToString()
    {
        return $"{FirstName} {LastName}: "
            + Environment.NewLine +
            $"{Address}"
            + Environment.NewLine +
            $"{Employment}";
    }
}

与同伴课程

class Address
{
    public string City { get; set; }
    public int PostCode { get; set; }

    public override string ToString()
    {
        return $"Адрес: {City}-{PostCode} ";
    }
}

class Employment
{
    public string CompanyName { get; set; }
    public string Position { get; set; }
    public int AnnualIncome { get; set; }

    public override string ToString()
    {
        return $"Работа: {CompanyName}, должность: {Position}, зарплата: {AnnualIncome}";
    }
}

独立设法只编写这样一个构建器

class PersonBuilder
{
    //аккумулятор названий свойств и их значений
    private readonly Dictionary<string, object> _propertiesToBuild;

    public PersonBuilder()
    {
        _propertiesToBuild = new Dictionary<string, object>();
    }

    //запоминание в словаре названия свойства и его значения
    public PersonBuilder Set<T>(Expression<Func<Person, T>> expression, T value)
    {
        var propertyName = ((MemberExpression)expression.Body).Member.Name;
        _propertiesToBuild.Add(propertyName, value);
        return this;
    }

    public T Include<T>(Expression<Func<Person, T>> expression) 
    {
        var propertyName = ((MemberExpression)expression.Body).Member.Name;
        if (propertyName == nameof(Person.Address))
        {
            var result = new Address();
            return (T)(object)result;
        }
        else
        {
            var result = new Employment();
            return (T)(object)result;
        }
    }

    //создание экземпляра на основе значений свойств из словаря
    public Person Build()
    {
        return new Person
        (
            firstName: GetPropertyValue<string>(nameof(Person.FirstName), "Неизвестно"),
            lastName: GetPropertyValue<string>(nameof(Person.LastName), "Неизвестно"),
            address: new Address(),
            employment: new Employment()
        );
    }

    private T GetPropertyValue<T>(string propertyName, T defaultValue)
    {
        return _propertiesToBuild.TryGetValue(propertyName, out var value) ? (T)value : defaultValue;
    }
}

虽然它是这样工作的

var person = new PersonBuilder()
                           .Set(p => p.FirstName, "Андрей")
                           .Set(p => p.LastName, "Иванов")
                           .Build();

或者

Address address = new PersonBuilder()
                           .Set(p => p.FirstName, "Андрей")
                           .Set(p => p.LastName, "Иванов")
                           .Include(p => p.Address);

或者像这样

Employment employment = new PersonBuilder()
                           .Set(p => p.FirstName, "Андрей")
                           .Set(p => p.LastName, "Иванов")
                           .Include(p => p.Employment);

我希望结果是这样的

Person person = new PersonBuilder()
                           .Set(p => p.FirstName, "Андрей")
                           .Set(p => p.LastName, "Иванов")
                           .Include(p => p.Address)
                           .Set(a => a.City, "Москва")
                           .Include(p => p)
                           .Include(p => p.Employment)
                           .Set(e => e.Position, "инженер")
                           .Include(p => p)
                           .Build();

PS结果版本在这里,谢谢@Vasek

c#
  • 4 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-04-12 00:06:37 +0000 UTC

自引用或自加入关系如何提出请求?

  • 1

这是一张桌子

CREATE TABLE [dbo].[Employees] (
[Id]        INT           IDENTITY (1, 1) NOT NULL,
[Name]      NVARCHAR (50) NOT NULL,
[ManagerId] INT           NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Employees_Employees] FOREIGN KEY ([ManagerId]) REFERENCES [dbo].[Employees] ([Id])
);

这样的要求

SELECT Id, Name, ManagerId
FROM dbo.Employees;

给出这个结果

+----+----------+-----------+
| Id |   Name   | ManagerId |
+----+----------+-----------+
|  1 | Иван     | NULL      |
|  2 | Мария    | 7         |
|  3 | Кристина | 7         |
|  4 | Виктор   | 1         |
|  5 | Сергей   | 1         |
|  6 | Григорий | 7         |
|  7 | Мирон    | 1         |
+----+----------+-----------+

如果提出这样的要求

SELECT em.Id
     , em.Name  AS 'Manager'
     , m.Name
FROM dbo.Employees AS em
RIGHT JOIN dbo.Employees AS m
    ON em.Id = m.ManagerId
ORDER BY em.Id;

变成这样

+------+---------+----------+
|  Id  | Manager |   Name   |
+------+---------+----------+
| NULL | NULL    | Иван     |
| 1    | Иван    | Виктор   |
| 1    | Иван    | Сергей   |
| 1    | Иван    | Мирон    |
| 7    | Мирон   | Григорий |
| 7    | Мирон   | Мария    |
| 7    | Мирон   | Кристина |
+------+---------+----------+

所以我试图转身LEFT JOIN

SELECT em.Id
     , em.Name  
     , m.Name AS 'Manager'
FROM dbo.Employees AS em
LEFT JOIN dbo.Employees AS m
    ON em.Id = m.ManagerId
ORDER BY m.Id;

我明白了

+----+----------+----------+
| Id |   Name   | Manager  |
+----+----------+----------+
|  2 | Мария    | NULL     |
|  3 | Кристина | NULL     |
|  4 | Виктор   | NULL     |
|  5 | Сергей   | NULL     |
|  6 | Григорий | NULL     |
|  7 | Мирон    | Мария    |
|  7 | Мирон    | Кристина |
|  1 | Иван     | Виктор   |
|  1 | Иван     | Сергей   |
|  7 | Мирон    | Григорий |
|  1 | Иван     | Мирон    |
+----+----------+----------+

如何修复并获取左侧的完整员工列表,右侧的经理是谁?

sql
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-07-18 15:47:53 +0000 UTC

设计器中未显示的元素

  • 4

这是问题的更正和更新版本。

我以标准方式创建一个项目(我刚刚开始掌握为 android 编写程序)。 第一步 (API的选择不会以任何方式影响错误的发生,已经过经验验证) 并且在输出中我得到了一个项目,但设计器没有显示,以及任何其他元素。你可以看到错误信息 第二步 第三步 第四步TextView错误的最终结果

我正在运行 Ubuntu 16.04。工作室版 关于节目

如果项目在模拟器或设备上编译并运行,则会显示文本。

只要复仇找到了解决方案 ,就/res/values/styles.xml必须改变

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">...</style>

在

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">...</style>

这个决定让我有点紧张。结果是某种拐杖。当我完成界面设计后,是否需要返回样式设置?

在 build.grandle(Module.app) 中,依赖项是这样的

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
android
  • 2 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-04-21 16:23:19 +0000 UTC

尝试安装 nuget 包时出错

  • 0

我最近在使用包时遇到了很多问题nuget。Visual Studio 加载有错误的包列表,并且所选包无法安装。

严重性代码描述项目文件行抑制状态错误从源“nuget.org”检索“Refit.4.3.0”的包元数据时出错。发送请求时出错。底层连接已关闭:发送时发生意外错误。无法从传输连接中读取数据:远程主机强行终止了现有连接。远程主机强行终止现有连接 0

如果您访问该站点并尝试从那里下载,则会出现消息“建立安全连接时出错”。只有我还是很多人?这可能是与推车摔跤的结果吗?

PS 我必须在具有适当设置的Linux虚拟机上下载该软件包并像这样安装它

PM> Install-Package refit -Source C:\Temp\
c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-02-21 17:54:46 +0000 UTC

如何使用 Type 变量进行转换?

  • 5

假设在代码前面的某个地方我保存了变量的类型

Type type = typeof(Int32);

value现在,有了一个类型变量,object我需要type像这样使用我的 c 转换,

var i = (type)value;

但这不起作用。可以做什么?

UPD 以防万一,这也不起作用。

var i = (type)Convert.ChangeType(value, type);

UPD2:应 Pavel Mayorov 的要求,我将我的评论添加到问题中:

“......想法是这样的:有一个带有属性Object Value和属性的基本抽象类Type ValueType。一个继承这个抽象类的具体类,将为该属性分配所需的类型ValueType,并且该属性本身将具有Value重要的价值。此外,当使用从抽象类继承的类型集合时,可以通过从." 中Value获取类型来提取所需类型的值。ValueType

c#
  • 2 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-12-27 05:50:21 +0000 UTC

反射。如何使用 ref 泛型参数调用方法?

  • 4

我们有这样一个类和方法

public class TestClass
{
    public void Swap<T>(ref T first, ref T second)
    {
        T tmp = second;
        second = first;
        first = tmp;
    }
}

我正在尝试使用反射并调用方法

[TestMethod]
public void InvokeGenericMethod()
{
    MethodInfo method = typeof(TestClass).GetMethod("Swap");
    MethodInfo methodWithInt = method.MakeGenericMethod(typeof(int));

    int one = 1;
    int two = 2;
    object[] arguments = { one, two };
    methodWithInt.Invoke(this, arguments);//здесь ошибка

    Assert.AreEqual(one, 2);
}

我得到一个错误{"Объект не соответствует конечному типу."}

它是怎么做的?谷歌导致了一个参数的例子out,由于某种原因,一切都像往常一样被调用,即 参数数组是像我一样创建的,然后通过Invoke(). 有什么想法?

c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-07-11 18:14:34 +0000 UTC

IEnumerable<TEntity> 和 Task<IEnumerable<TEntity>> 有什么区别?

  • 2

所以一切都好

public virtual IEnumerable<TEntity> Get()
{
    return Context.Set<TEntity>().ToList();
}

但值得一试

public virtual Task<IEnumerable<TEntity>> Get()
{
    return Context.Set<TEntity>().ToListAsync();
}

你会得到一个隐式的转换错误'System.Threading.Tasks.Task<System.Collections.Generic.List<TEntity>>' to 'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TEntity>>'

提出这个问题很大程度上是受到了对类似问题的回答的启发。以我的拙见,这个答案没有解释任何东西。是的,泛化情况下的协方差不起作用,尽管等等,第一个例子中的一切都好,还是不好?或者协方差仅在以下情况下才停止工作Task<>?

c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-02-26 23:38:54 +0000 UTC

如何实现多行文本的运行突出显示(选择)?

  • 5

已经有一个关于文本阴影的问题并且已经得到了 回答。

简而言之,解决方案的本质是FormattedText从内容中创建一个隐藏的TextBlock,然后从中创建一个几何体FormattedText,使用显示Path,然后使用动画在其上绘制。

当文本占一行时一切正常,但是当有几行时,结果就不是我们想要的了。

不正确的文本底纹示例

我不会重复 XAML,因为 它与上述答案中的完全相同。我的代码也没有太大区别,但为了清楚起见,我将给出它。

private List<Rect> _RectsForFill;   // прямоугольники с каждым символом
private double _LengthFillText;      // общая ширина рисованного текста

//анимация
Storyboard _Storyboard;
DoubleAnimation _FromAnimation;
DoubleAnimation _ToAnimation;

private void CreateFillText()
{
    //получаем текстовое содержимое
    TextBlock tb = this.textBlockHidden;
    var text = tb.Text;

    //создаем экземпляр форматированного текста
    FormattedText formattedText = new FormattedText(
        text,
        CultureInfo.GetCultureInfo("en-US"),
        FlowDirection.LeftToRight,
        new Typeface(
            tb.FontFamily,
            tb.FontStyle,
            tb.FontWeight,
            tb.FontStretch),
            tb.FontSize,
            Brushes.Black // конкретная кисть нам не важна, мы используем только геометрию
        );

    //берем переносы строк у эталонного текстблока
    formattedText.MaxTextWidth = this.textBlockHidden.Width;
    formattedText.MaxTextHeight = this.textBlockHidden.Height;

    // стащили геометрию у текста...
    var geo = formattedText.BuildGeometry(new Point());
    // ...и отдали её Path'у
    Target.Data = geo;

    //вычислим прямоугольники для заполнения
    GetRectsForFill(text, formattedText);
}

private void GetRectsForFill(string text, FormattedText formattedText)
{
    var bb = formattedText.BuildHighlightGeometry(new Point());
    _LengthFillText = bb.Bounds.Width; // общая ширина

    //заполняем коллекцию побуквенных боксов
    _RectsForFill = Enumerable.Range(0, text.Length)
                            .Select(k => formattedText.BuildHighlightGeometry(new Point(), k, 1)
                                                                   .Bounds)
                        .ToList();

    //ссылки на анимацию для дальнейшей работы с ней
    _Storyboard = (Storyboard)Target.Resources["AnimationStoryboard"];
    _FromAnimation = (DoubleAnimation)_Storyboard.Children[0];
    _ToAnimation = (DoubleAnimation)_Storyboard.Children[1];
}

这是一种用黑色填充渲染文本的方法

/// <summary>
/// Закрашивание рисованного текста
/// </summary>
/// <param name="startPos">начальная позиция слова</param>
/// <param name="count">число закрашиваемых букв в слове</param>
public void FillTextPath(int startPos, int count)
{
    if (count == 0) throw new ArgumentException(nameof(count));

    //вычисляем индекс необходимого прямоугольника
    int index = startPos + count;
    if (index >= _RectsForFill.Count) index = _RectsForFill.Count - 1;

    //необходимый прямоугольник
    Rect box = _RectsForFill[index];

    //закрашиваем
    _FromAnimation.From = box.Left / _LengthFillText;
    _FromAnimation.To = box.Right / _LengthFillText;
    _ToAnimation.From = box.Left / _LengthFillText;
    _ToAnimation.To = box.Right / _LengthFillText;
    _Storyboard.Begin();
} 
c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-02-21 06:02:42 +0000 UTC

是否可以处理从另一个类的构造函数抛出的类构造函数中的错误?

  • 2

我有一个用于文本到语音转换的实用程序类,在其构造函数中可以选择必要的合成器语言,但问题是用户可能未安装该语言,然后,如果出现错误,选择列表中的第一种语言

//это конструктор
public SpeechSynth()
{
    //выбираем голос по-умолчанию
    try
    {
        SelectedVoice = _Synthesizer
                            .GetInstalledVoices()
                            .First(v => v.VoiceInfo.Description.Contains("France"));
    }
    catch (Exception)
    {
        //тогда выбираем первый доступный
        SelectedVoice = _Synthesizer.GetInstalledVoices().First();
        Debug.WriteLine("Ошибка выбора голоса при инициализации.");
        //throw;
    }
}

这是 ViewModel 的开始

private SpeechSynth _Speech;

//ctor
public MainViewModel()
{
    try
    {
        _Speech = new SpeechSynth();
    }
    catch (Exception)
    {
        //здесь хотелось бы сообщить пользователю, что целевой язык не доступен
        //требуется его установить.                
    }

}

因此,在块中的 VM 构造函数中,catch我仍然无法告诉用户任何信息(MessageBox例如调用)。这样的问题怎么解决?也许是一些延迟加载之类的?

PS 说明,原则上,当然,如果您在 VM 中 zafigachit MessageBox,那么它可以显示,但事实并非如此。为了调用 MessageBox,使用了一个实用消息类,顺便说一句,它也从构造函数中进行初始化,此外,从构造函数中用合成器完成了一些其他事情(我删除了所有这些以免干扰主要的事情与次要的)。如果出现错误,_Speech它会变成 == null,并且仍然无法使用它。

c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-01-12 19:20:07 +0000 UTC

我间歇性地得到 System.IO.IOException

  • 1

System.IO.IOException 未处理消息:PresentationCore.dll 中出现类型为“System.IO.IOException”的未处理异常附加信息:无法从流中读取数据。

错误偶尔出现。该算法如下:

  1. 我收集了互联网上图片的链接,一切都很好
  2. 用于我使用的显示ListBox,它与集合相关联ObservableCollection<BitmapImage>

这是填充集合的方法

/// <summary>
    /// Заполнение списка картинок
    /// </summary>
    /// <param name="addresses"></param>
    private void LoadListImages(List<string> addresses)
    {
        //будущая коллекция картинок
        ListImages = new ObservableCollection<BitmapImage>();

        //to UI
        MessageUser.MessageJob.Report("Загружаем картинки...");

        try
        {
            int i = 1;
            BitmapImage bImage = null;
            foreach (var address in addresses)
            {
                //to UI
                MessageUser.MessageJob.Report($"Загружаем {i}...");
                //новая картинка
                bImage = new BitmapImage(new Uri(address, UriKind.RelativeOrAbsolute));
                //размеры
                bImage.DecodePixelHeight = 100;
                bImage.DecodePixelWidth = 100;
                //картинку в коллекцию
                ListImages.Add(bImage);
                //счетчик
                i++;
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine($"{nameof(LoadListImages)} - {ex.Message}");
            throw;
        }
    }

该方法奏效了。我什至一步一步地经历了它,甚至在发生这个错误的情况下,但是在退出方法后立即发生错误,即,据我了解,在用户界面应该已经开始显示图片并BitmapImage开始“加载”所需的链接。如何克服?

c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-01-07 21:04:07 +0000 UTC

使用方法时的类型化集合及其接口

  • 2

如果我们想从方法中得到List<T>如何正确地做:

  1. List<T> Method() {...}
  2. IList<T> Method() {...}
  3. IEnumerable<T> Method() {...}
  4. ICollection<T> Method() {...}

为什么?

如果我们想按List<T>原样传递给方法:

  1. void Method(List<T> list) {...}
  2. void Method(IList<T> list) {...}
  3. void Method(IEnumerable<T> list) {...}
  4. void Method(ICollection<T> list) {...}

为什么?

PS 原则上,这两种情况对public和都有意义private。例如,实体框架在这里生成方法 c ICollection。人们通过 IEnumerable 工作的例子有很多。这是为什么?

c#
  • 2 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-01-04 01:13:39 +0000 UTC

我通过 HttpClient 获取无法理解的内容

  • 0

告诉我,任何人都可以通过 HttpClient 地址下载 http://www.wordreference.com/definition/like作为回应我明白了

例子

是加密的内容,然后通过脚本打开浏览器吗?或者是别的什么?为了以防万一,我解释说:我在其他站点上尝试了我的代码,那里一切正常,我怀疑编码是问题所在。

应该用PS解压HttpClientHandler

    private static async Task<string> GetAnswerAsync(string request)
    {
        string result = String.Empty;

        HttpClientHandler handler = new HttpClientHandler()
        {
            AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
        };

        using (HttpClient client = new HttpClient(handler))
        using (var response = await client.GetAsync(request))
        {
            response.EnsureSuccessStatusCode();
            result = await response.Content.ReadAsStringAsync();
        }

        return result;
    } 
c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-12-13 00:16:46 +0000 UTC

锁定并尝试捕获

  • 1

当一个操作同时需要两者时如何正确编写?

try
{
    lock(locker)
    {
         ....
    }
}
catch(...)
{
     ...
}

或者

lock(locker)
{
    try
    {
         ...
    }
    catch(...)
    {
      ...
    }
 }

以及如果发生异常会被锁住怎么办?

c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-12-02 23:05:25 +0000 UTC

Xamarin.Android 和适当的应用架构

  • 2

我决定在这里研究 Xamarin.Android。而且我找不到正确组织典型应用程序的“指导性”正确说明。

正如我设法看到的那样,由于缺乏绑定,机器人中的 MVVM 是不可能的,好吧,也许然后是 MVP?!不,那也是胡说八道。我在 YouTube 上看过多少课程 - 一切都是模塑的,有时甚至是编写 UI,直接进入课堂MainActivity。从处理程序开始的一个巨大的工作表OnCreate,让我们开始吧:我们立即创建带有视图的内容,立即订阅事件,事件处理程序在下面,等等。就像本科生一样。

你能告诉我一些关于这个话题的事情吗,我特别呼吁那些已经与 zamarin 合作过很多的人。谢谢你。

android
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-11-09 02:46:06 +0000 UTC

是否有可能以某种方式优化此 XML 解析?

  • 3

两个用于记住解析的类:

class Answer
    {
        public int Index { get; set; }
        public bool Correct { get; set; }
        public string Desc { get; set; }
    }

    class Question
    {
        public int Id { get; set; }
        public string Content { get; set; }
        public string MainQuestion { get; set; }
        public int MainQuestionContent { get; set; }
        public List<Answer> Answers { get; set; } = new List<Answer>();
    }

接下来,XML 本身及其解析:

static void Main(string[] args)
    {
        string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
                 <testing>
                  <questions>
                    <question id=""1"" content=""hi"">
                      <main_question content=""1"">Вопрос 1</main_question>
                      <answer index=""1"" correct=""true"">Ответ 1</answer>
                      <answer index=""2"" correct=""true"">Ответ 2</answer>
                      <answer index=""3"" correct=""false"">Ответ 3</answer>
                    </question>
                  </questions>
                </testing>";

        XElement elements = XElement.Parse(xml);

        List<Question> questionsList = new List<Question>();
        Question itemQuestion;
        Answer itemAnswer;

        foreach (XElement question in elements.Element("questions").Elements("question"))
        {
            itemQuestion = new Question();

            itemQuestion.Id = Convert.ToInt32(question.Attribute("id")?.Value);
            itemQuestion.Content = question.Attribute("content")?.Value;
            itemQuestion.MainQuestion = question.Element("main_question")?.Value;
            itemQuestion.MainQuestionContent = Convert.ToInt32(question.Element("main_question")?.Attribute("content")?.Value);

            var answers = from a in question.Elements("answer")
                          select new
                          {
                              AttributeIndex = a.Attribute("index")?.Value,
                              AttributeCorrect = a.Attribute("correct")?.Value,
                              Answer = a?.Value
                          };

            if (answers.Any())
            {
                foreach (var item in answers)
                {
                    itemAnswer = new Answer();

                    itemAnswer.Index = Convert.ToInt32(item.AttributeIndex);
                    itemAnswer.Correct = Convert.ToBoolean(item.AttributeCorrect);
                    itemAnswer.Desc = item.Answer;

                    itemQuestion.Answers.Add(itemAnswer);
                }
            }

            questionsList.Add(itemQuestion);

        }
    }

我想把foreach (XElement question in elements.Element("questions").Elements("question")) 它变成 LINQ 查询,但我不知道该怎么做。

感谢@Grundy 的提示,原来是这样优化的:

List<Question> questionsList = (from question in elements.Element("questions").Elements("question")
                                        select new Question()
                                        {
                                            Id = Convert.ToInt32(question.Attribute("id")?.Value),
                                            Content = question.Attribute("content")?.Value,
                                            MainQuestion = question.Element("main_question")?.Value,
                                            MainQuestionContent = Convert.ToInt32(question.Element("main_question")?.Attribute("content")?.Value),
                                            Answers = (from a in question.Elements("answer")
                                                       select new Answer
                                                       {
                                                           Index = Convert.ToInt32(a.Attribute("index")?.Value),
                                                           Correct = Convert.ToBoolean(a.Attribute("correct")?.Value),
                                                           Desc = a?.Value

                                                       }).ToList()
                                        }).ToList();
c#
  • 1 个回答
  • 10 Views
Martin Hope
Bulson
Asked: 2020-10-09 04:39:07 +0000 UTC

System.Windows.Controls.WebBrowser (WPF) 和 HtmlAgilityPack

  • 0

如何从此控件获取 html 页面,以便将其加载到 HtmlAgilityPack.HtmlDocument 中?在 LoadCompleted 事件中,您可以访问属性:var doc = this.webBrowser.Document; 但关键是这个属性是object类型的。怎样成为?

c#
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5