返回字符串列表

本文关键字:列表 字符串 返回 | 更新日期: 2023-09-27 17:57:06

我需要修改下面提到的方法以返回字符串列表。它将以联系人ID作为输入,并应返回问卷列表

public string GetFatcaQuestionnaire(int contactId, string questionnaireType)
{
    using (var context = new dbDealingContainer())
    {
        if (context.Connection.State == ConnectionState.Closed)
            context.Connection.Open();
        var fatcaQuestionaires = context.FatcaQuestionaires.FirstOrDefault(p => p.ContactID == contactId && p.QuestionnaireType == questionnaireType);
        return fatcaQuestionaires != null ? fatcaQuestionaires.Questionaire : null;
    }
}

新提出的方法

public List<string> GetFatcaQuestionnaire(int contactId)
{
    using (var context = new dbDealingContainer())
    {
        if (context.Connection.State == ConnectionState.Closed)
            context.Connection.Open();
        var fatcaQuestionaires = context.FatcaQuestionaires.Select(p => p.ContactID == contactId).ToList();
        return fatcaQuestionaires.ToList();
        //return fatcaQuestionaires.ToList() != null ? fatcaQuestionaires : null;
    }
}

实际上需要返回一个只有fatcaQuestonaires的列表。 Questionaire而不是整个fatcaQuestonaires对象。有人可以告诉我该怎么做吗?

返回字符串列表

使用 Linq,首先可以执行筛选所需行的Where,然后Select仅投影 Questionaire 属性。

试试这个

return context.FatcaQuestionaires
    .Where(p => p.ContactID == contactId)
    .Select(p => p.Questionaire)
    .ToList();

几乎拥有它。 Select调用转换函数,所以它只是列出bool。您需要一个 Where 子句来执行过滤,然后需要一个Select

var fatcaQuestionaires = context.FatcaQuestionaires
                        .Where(p => p.ContactID == contactId)
                        .Select(p => p.Quentionaire);
return fatcaQuestionaires.ToList();

你写的东西看起来会返回一个布尔值列表,而不是编译。 您需要的是where子句和select子句的组合。

return context.FatcaQuestionaires
    .Where(p => p.ContactID == contactId)
    .Select(p => p.Questionaire).ToList();

Where()是限制事实获取者的原因,Select()是您选择要返回的属性的地方。 你也可以这样写:

return (from p in context.FatcaQuestionaires
        where p.ContactID == contactId
        select p.Questionaire).ToList();

正如我在评论中提到的,将Select更改为WhereSelect只会根据 lambda 表达式为每个条目的评估返回一个布尔值。所以你最终会得到一个List<bool>

 var fatcaQuestionaires = context.FatcaQuestionaires
    .Where(p => p.ContactID == contactId)
    .Select(q=>q.Questionaire).ToList();
 return fatcaQuestionaires;

投影出您想要的属性。选择(x => x.MyProp);

return fatcaQuestionaires.Select(x => x.Questionaire).ToList();