如何从LINQ获取IEnumerable <Foo>而不是IEnumerable <string>?

Kyl*_*Ren 6 c# linq entity-framework

我被困在LINQ查询中,我试图从SQL Table使用中返回列表记录EntityFramework 6,而不是获取该列表,我最终得到一个IEnumerable<string[]>.

这就是我的目标IEnumerable<string[]>.我有一个columntable需要被拆分,然后我测试,以查看是否list包含这些字符串:表列中的值columnOne可以是这样"a-b"还是"b-c"等,因此使用这种需要s.columnOne.Split('-')

list<string> checkList = new list<string>();
checkList.add("a")
checkList.add("b")
checkList.add("c")

List<Foo> fooList = dbContext.Foos.ToList();

IEnumerable<string[]> items = fooList.Select(s => s.columnOne.Split('-'));

var result = items.SelectMany(x => x)
                  .Where(s => checkList.Contains(s)).ToList();
Run Code Online (Sandbox Code Playgroud)

上面的工作应该如此,但最后它返回一个列表string,这不是我需要的.

我试过这个:

List<Foo> fooList = dbContext.Foos.ToList();

var test = fooList.Where(s => s.columnOne.Split('-'));
Run Code Online (Sandbox Code Playgroud)

这就是我遇到错误的地方,因为我最终会尝试返回一个列表<Foo>,而不是<string>

现在我知道该Where子句需要返回一个boolfooList.Where(s => s.columnOne == "someString");,但是我不知道如何构建LINQ查询以获得我想要得到的结果.

任何正确方向的推动都会很棒.

Aar*_*rts 6

where子句需要包含对的检查 checkList

var test = fooList.Where(foo => foo.columnOne.Split('-').Any(str => checkList.Contains(str)));
Run Code Online (Sandbox Code Playgroud)